
(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 24 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev 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(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - 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(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_2 (+ 2.0 (/ EAccept KbT)))
(t_3 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_4 (/ NdChar t_0))
(t_5 (+ t_4 (/ NaChar t_0)))
(t_6 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_7 (+ t_6 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))
(if (<= Vef -4.2e+183)
t_5
(if (<= Vef -6e+30)
(+ t_3 (/ NaChar t_2))
(if (<= Vef -1.4e-207)
t_7
(if (<= Vef 2.05e-222)
(+ t_3 (/ NaChar (- (+ t_2 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= Vef 7.5e-176)
t_1
(if (<= Vef 5.1e-133)
(+ t_4 (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Vef 1.5e-10)
(+
(/
NaChar
(+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))
(if (<= Vef 6.4e+27)
t_7
(if (<= Vef 4.6e+137)
t_5
(if (<= Vef 9.5e+148)
(+ t_6 t_1)
(if (<= Vef 2.65e+193) (+ t_4 t_1) t_5)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((Ev / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = NdChar / t_0;
double t_5 = t_4 + (NaChar / t_0);
double t_6 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_7 = t_6 + (NaChar / (1.0 + exp((EAccept / KbT))));
double tmp;
if (Vef <= -4.2e+183) {
tmp = t_5;
} else if (Vef <= -6e+30) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -1.4e-207) {
tmp = t_7;
} else if (Vef <= 2.05e-222) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 7.5e-176) {
tmp = t_1;
} else if (Vef <= 5.1e-133) {
tmp = t_4 + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Vef <= 1.5e-10) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else if (Vef <= 6.4e+27) {
tmp = t_7;
} else if (Vef <= 4.6e+137) {
tmp = t_5;
} else if (Vef <= 9.5e+148) {
tmp = t_6 + t_1;
} else if (Vef <= 2.65e+193) {
tmp = t_4 + t_1;
} else {
tmp = t_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) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((ev / kbt)))
t_2 = 2.0d0 + (eaccept / kbt)
t_3 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_4 = ndchar / t_0
t_5 = t_4 + (nachar / t_0)
t_6 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_7 = t_6 + (nachar / (1.0d0 + exp((eaccept / kbt))))
if (vef <= (-4.2d+183)) then
tmp = t_5
else if (vef <= (-6d+30)) then
tmp = t_3 + (nachar / t_2)
else if (vef <= (-1.4d-207)) then
tmp = t_7
else if (vef <= 2.05d-222) then
tmp = t_3 + (nachar / ((t_2 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 7.5d-176) then
tmp = t_1
else if (vef <= 5.1d-133) then
tmp = t_4 + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (vef <= 1.5d-10) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
else if (vef <= 6.4d+27) then
tmp = t_7
else if (vef <= 4.6d+137) then
tmp = t_5
else if (vef <= 9.5d+148) then
tmp = t_6 + t_1
else if (vef <= 2.65d+193) then
tmp = t_4 + t_1
else
tmp = t_5
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = NdChar / t_0;
double t_5 = t_4 + (NaChar / t_0);
double t_6 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_7 = t_6 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
double tmp;
if (Vef <= -4.2e+183) {
tmp = t_5;
} else if (Vef <= -6e+30) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -1.4e-207) {
tmp = t_7;
} else if (Vef <= 2.05e-222) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 7.5e-176) {
tmp = t_1;
} else if (Vef <= 5.1e-133) {
tmp = t_4 + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Vef <= 1.5e-10) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else if (Vef <= 6.4e+27) {
tmp = t_7;
} else if (Vef <= 4.6e+137) {
tmp = t_5;
} else if (Vef <= 9.5e+148) {
tmp = t_6 + t_1;
} else if (Vef <= 2.65e+193) {
tmp = t_4 + t_1;
} else {
tmp = t_5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((Ev / KbT))) t_2 = 2.0 + (EAccept / KbT) t_3 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_4 = NdChar / t_0 t_5 = t_4 + (NaChar / t_0) t_6 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_7 = t_6 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) tmp = 0 if Vef <= -4.2e+183: tmp = t_5 elif Vef <= -6e+30: tmp = t_3 + (NaChar / t_2) elif Vef <= -1.4e-207: tmp = t_7 elif Vef <= 2.05e-222: tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 7.5e-176: tmp = t_1 elif Vef <= 5.1e-133: tmp = t_4 + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Vef <= 1.5e-10: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) elif Vef <= 6.4e+27: tmp = t_7 elif Vef <= 4.6e+137: tmp = t_5 elif Vef <= 9.5e+148: tmp = t_6 + t_1 elif Vef <= 2.65e+193: tmp = t_4 + t_1 else: tmp = t_5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_2 = Float64(2.0 + Float64(EAccept / KbT)) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_4 = Float64(NdChar / t_0) t_5 = Float64(t_4 + Float64(NaChar / t_0)) t_6 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_7 = Float64(t_6 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) tmp = 0.0 if (Vef <= -4.2e+183) tmp = t_5; elseif (Vef <= -6e+30) tmp = Float64(t_3 + Float64(NaChar / t_2)); elseif (Vef <= -1.4e-207) tmp = t_7; elseif (Vef <= 2.05e-222) tmp = Float64(t_3 + Float64(NaChar / Float64(Float64(t_2 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 7.5e-176) tmp = t_1; elseif (Vef <= 5.1e-133) tmp = Float64(t_4 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Vef <= 1.5e-10) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); elseif (Vef <= 6.4e+27) tmp = t_7; elseif (Vef <= 4.6e+137) tmp = t_5; elseif (Vef <= 9.5e+148) tmp = Float64(t_6 + t_1); elseif (Vef <= 2.65e+193) tmp = Float64(t_4 + t_1); else tmp = t_5; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((Ev / KbT))); t_2 = 2.0 + (EAccept / KbT); t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_4 = NdChar / t_0; t_5 = t_4 + (NaChar / t_0); t_6 = NdChar / (1.0 + exp((EDonor / KbT))); t_7 = t_6 + (NaChar / (1.0 + exp((EAccept / KbT)))); tmp = 0.0; if (Vef <= -4.2e+183) tmp = t_5; elseif (Vef <= -6e+30) tmp = t_3 + (NaChar / t_2); elseif (Vef <= -1.4e-207) tmp = t_7; elseif (Vef <= 2.05e-222) tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 7.5e-176) tmp = t_1; elseif (Vef <= 5.1e-133) tmp = t_4 + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Vef <= 1.5e-10) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); elseif (Vef <= 6.4e+27) tmp = t_7; elseif (Vef <= 4.6e+137) tmp = t_5; elseif (Vef <= 9.5e+148) tmp = t_6 + t_1; elseif (Vef <= 2.65e+193) tmp = t_4 + t_1; else tmp = t_5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(NdChar / t$95$0), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$4 + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(t$95$6 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.2e+183], t$95$5, If[LessEqual[Vef, -6e+30], N[(t$95$3 + N[(NaChar / t$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.4e-207], t$95$7, If[LessEqual[Vef, 2.05e-222], N[(t$95$3 + N[(NaChar / N[(N[(t$95$2 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 7.5e-176], t$95$1, If[LessEqual[Vef, 5.1e-133], N[(t$95$4 + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.5e-10], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 6.4e+27], t$95$7, If[LessEqual[Vef, 4.6e+137], t$95$5, If[LessEqual[Vef, 9.5e+148], N[(t$95$6 + t$95$1), $MachinePrecision], If[LessEqual[Vef, 2.65e+193], N[(t$95$4 + t$95$1), $MachinePrecision], t$95$5]]]]]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := 2 + \frac{EAccept}{KbT}\\
t_3 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_4 := \frac{NdChar}{t_0}\\
t_5 := t_4 + \frac{NaChar}{t_0}\\
t_6 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_7 := t_6 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;Vef \leq -4.2 \cdot 10^{+183}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;Vef \leq -6 \cdot 10^{+30}:\\
\;\;\;\;t_3 + \frac{NaChar}{t_2}\\
\mathbf{elif}\;Vef \leq -1.4 \cdot 10^{-207}:\\
\;\;\;\;t_7\\
\mathbf{elif}\;Vef \leq 2.05 \cdot 10^{-222}:\\
\;\;\;\;t_3 + \frac{NaChar}{\left(t_2 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 7.5 \cdot 10^{-176}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 5.1 \cdot 10^{-133}:\\
\;\;\;\;t_4 + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.5 \cdot 10^{-10}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;Vef \leq 6.4 \cdot 10^{+27}:\\
\;\;\;\;t_7\\
\mathbf{elif}\;Vef \leq 4.6 \cdot 10^{+137}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;Vef \leq 9.5 \cdot 10^{+148}:\\
\;\;\;\;t_6 + t_1\\
\mathbf{elif}\;Vef \leq 2.65 \cdot 10^{+193}:\\
\;\;\;\;t_4 + t_1\\
\mathbf{else}:\\
\;\;\;\;t_5\\
\end{array}
\end{array}
if Vef < -4.2e183 or 6.4000000000000003e27 < Vef < 4.59999999999999999e137 or 2.6499999999999999e193 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 92.8%
Taylor expanded in EAccept around 0 89.1%
+-commutative31.4%
Simplified89.1%
Taylor expanded in Vef around inf 87.0%
if -4.2e183 < Vef < -5.99999999999999956e30Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 72.3%
Taylor expanded in EAccept around 0 65.2%
if -5.99999999999999956e30 < Vef < -1.39999999999999996e-207 or 1.5e-10 < Vef < 6.4000000000000003e27Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.6%
Taylor expanded in EAccept around inf 60.4%
if -1.39999999999999996e-207 < Vef < 2.0500000000000002e-222Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.5%
associate-+r+31.0%
+-commutative31.0%
Simplified73.5%
if 2.0500000000000002e-222 < Vef < 7.5e-176Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.8%
Taylor expanded in Ev around inf 52.9%
Taylor expanded in NdChar around 0 72.4%
if 7.5e-176 < Vef < 5.0999999999999999e-133Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.7%
Taylor expanded in mu around inf 77.7%
associate-*r/77.7%
mul-1-neg77.7%
Simplified77.7%
if 5.0999999999999999e-133 < Vef < 1.5e-10Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.0%
Taylor expanded in EDonor around 0 68.9%
if 4.59999999999999999e137 < Vef < 9.5000000000000002e148Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 100.0%
Taylor expanded in Ev around inf 76.1%
if 9.5000000000000002e148 < Vef < 2.6499999999999999e193Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in Ev around inf 100.0%
Final simplification74.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (+ 2.0 (/ EAccept KbT)))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_3 (+ (/ NdChar t_0) (/ NaChar t_0)))
(t_4
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= Vef -8.6e+186)
t_3
(if (<= Vef -4e+40)
(+ t_2 (/ NaChar t_1))
(if (<= Vef -3e-41)
t_4
(if (<= Vef -5.6e-210)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef -1.4e-260)
t_4
(if (<= Vef 1.15e-268)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Vef 4.3e-221)
(+
t_2
(/ NaChar (- (+ t_1 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= Vef 1.82e+196) t_4 t_3))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = 2.0 + (EAccept / KbT);
double t_2 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_3 = (NdChar / t_0) + (NaChar / t_0);
double t_4 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -8.6e+186) {
tmp = t_3;
} else if (Vef <= -4e+40) {
tmp = t_2 + (NaChar / t_1);
} else if (Vef <= -3e-41) {
tmp = t_4;
} else if (Vef <= -5.6e-210) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= -1.4e-260) {
tmp = t_4;
} else if (Vef <= 1.15e-268) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Vef <= 4.3e-221) {
tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 1.82e+196) {
tmp = t_4;
} 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) :: t_4
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = 2.0d0 + (eaccept / kbt)
t_2 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_3 = (ndchar / t_0) + (nachar / t_0)
t_4 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (vef <= (-8.6d+186)) then
tmp = t_3
else if (vef <= (-4d+40)) then
tmp = t_2 + (nachar / t_1)
else if (vef <= (-3d-41)) then
tmp = t_4
else if (vef <= (-5.6d-210)) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= (-1.4d-260)) then
tmp = t_4
else if (vef <= 1.15d-268) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (vef <= 4.3d-221) then
tmp = t_2 + (nachar / ((t_1 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 1.82d+196) then
tmp = t_4
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = 2.0 + (EAccept / KbT);
double t_2 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_3 = (NdChar / t_0) + (NaChar / t_0);
double t_4 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -8.6e+186) {
tmp = t_3;
} else if (Vef <= -4e+40) {
tmp = t_2 + (NaChar / t_1);
} else if (Vef <= -3e-41) {
tmp = t_4;
} else if (Vef <= -5.6e-210) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= -1.4e-260) {
tmp = t_4;
} else if (Vef <= 1.15e-268) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Vef <= 4.3e-221) {
tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 1.82e+196) {
tmp = t_4;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = 2.0 + (EAccept / KbT) t_2 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_3 = (NdChar / t_0) + (NaChar / t_0) t_4 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if Vef <= -8.6e+186: tmp = t_3 elif Vef <= -4e+40: tmp = t_2 + (NaChar / t_1) elif Vef <= -3e-41: tmp = t_4 elif Vef <= -5.6e-210: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= -1.4e-260: tmp = t_4 elif Vef <= 1.15e-268: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Vef <= 4.3e-221: tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 1.82e+196: tmp = t_4 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(2.0 + Float64(EAccept / KbT)) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_3 = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (Vef <= -8.6e+186) tmp = t_3; elseif (Vef <= -4e+40) tmp = Float64(t_2 + Float64(NaChar / t_1)); elseif (Vef <= -3e-41) tmp = t_4; elseif (Vef <= -5.6e-210) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= -1.4e-260) tmp = t_4; elseif (Vef <= 1.15e-268) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Vef <= 4.3e-221) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(t_1 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 1.82e+196) tmp = t_4; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = 2.0 + (EAccept / KbT); t_2 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_3 = (NdChar / t_0) + (NaChar / t_0); t_4 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (Vef <= -8.6e+186) tmp = t_3; elseif (Vef <= -4e+40) tmp = t_2 + (NaChar / t_1); elseif (Vef <= -3e-41) tmp = t_4; elseif (Vef <= -5.6e-210) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= -1.4e-260) tmp = t_4; elseif (Vef <= 1.15e-268) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Vef <= 4.3e-221) tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 1.82e+196) tmp = t_4; else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -8.6e+186], t$95$3, If[LessEqual[Vef, -4e+40], N[(t$95$2 + N[(NaChar / t$95$1), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -3e-41], t$95$4, If[LessEqual[Vef, -5.6e-210], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.4e-260], t$95$4, If[LessEqual[Vef, 1.15e-268], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.3e-221], N[(t$95$2 + N[(NaChar / N[(N[(t$95$1 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.82e+196], t$95$4, t$95$3]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := 2 + \frac{EAccept}{KbT}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_3 := \frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
t_4 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -8.6 \cdot 10^{+186}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -4 \cdot 10^{+40}:\\
\;\;\;\;t_2 + \frac{NaChar}{t_1}\\
\mathbf{elif}\;Vef \leq -3 \cdot 10^{-41}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -5.6 \cdot 10^{-210}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq -1.4 \cdot 10^{-260}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 1.15 \cdot 10^{-268}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4.3 \cdot 10^{-221}:\\
\;\;\;\;t_2 + \frac{NaChar}{\left(t_1 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 1.82 \cdot 10^{+196}:\\
\;\;\;\;t_4\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -8.6e186 or 1.82e196 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in EAccept around 0 100.0%
+-commutative30.7%
Simplified100.0%
Taylor expanded in Vef around inf 96.6%
if -8.6e186 < Vef < -4.00000000000000012e40Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 77.4%
Taylor expanded in EAccept around 0 69.7%
if -4.00000000000000012e40 < Vef < -2.99999999999999989e-41 or -5.6e-210 < Vef < -1.3999999999999999e-260 or 4.2999999999999998e-221 < Vef < 1.82e196Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 78.2%
Taylor expanded in EAccept around 0 67.0%
+-commutative45.8%
Simplified67.0%
if -2.99999999999999989e-41 < Vef < -5.6e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 69.5%
Taylor expanded in Ec around inf 59.5%
associate-*r/59.5%
mul-1-neg59.5%
Simplified59.5%
if -1.3999999999999999e-260 < Vef < 1.15000000000000005e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.1%
Taylor expanded in mu around inf 82.0%
associate-*r/36.6%
mul-1-neg36.6%
Simplified82.0%
if 1.15000000000000005e-268 < Vef < 4.2999999999999998e-221Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.3%
associate-+r+28.4%
+-commutative28.4%
Simplified76.3%
Final simplification74.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_2 (+ 2.0 (/ EAccept KbT)))
(t_3 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_4 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_1))
(t_5 (/ NdChar t_0)))
(if (<= Vef -4.2e+183)
(+ t_5 (/ NaChar t_0))
(if (<= Vef -4.3e+40)
(+ t_3 (/ NaChar t_2))
(if (<= Vef -3e-41)
t_4
(if (<= Vef -3.8e-210)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef -2e-257)
t_4
(if (<= Vef 1.06e-268)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Vef 1.6e-221)
(+
t_3
(/ NaChar (- (+ t_2 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= Vef 2.3e+149) t_4 (+ t_5 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 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1;
double t_5 = NdChar / t_0;
double tmp;
if (Vef <= -4.2e+183) {
tmp = t_5 + (NaChar / t_0);
} else if (Vef <= -4.3e+40) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -3e-41) {
tmp = t_4;
} else if (Vef <= -3.8e-210) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= -2e-257) {
tmp = t_4;
} else if (Vef <= 1.06e-268) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Vef <= 1.6e-221) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 2.3e+149) {
tmp = t_4;
} else {
tmp = t_5 + 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) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_2 = 2.0d0 + (eaccept / kbt)
t_3 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_4 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_1
t_5 = ndchar / t_0
if (vef <= (-4.2d+183)) then
tmp = t_5 + (nachar / t_0)
else if (vef <= (-4.3d+40)) then
tmp = t_3 + (nachar / t_2)
else if (vef <= (-3d-41)) then
tmp = t_4
else if (vef <= (-3.8d-210)) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= (-2d-257)) then
tmp = t_4
else if (vef <= 1.06d-268) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (vef <= 1.6d-221) then
tmp = t_3 + (nachar / ((t_2 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 2.3d+149) then
tmp = t_4
else
tmp = t_5 + 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 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_1;
double t_5 = NdChar / t_0;
double tmp;
if (Vef <= -4.2e+183) {
tmp = t_5 + (NaChar / t_0);
} else if (Vef <= -4.3e+40) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -3e-41) {
tmp = t_4;
} else if (Vef <= -3.8e-210) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= -2e-257) {
tmp = t_4;
} else if (Vef <= 1.06e-268) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Vef <= 1.6e-221) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 2.3e+149) {
tmp = t_4;
} else {
tmp = t_5 + t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_2 = 2.0 + (EAccept / KbT) t_3 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_4 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_1 t_5 = NdChar / t_0 tmp = 0 if Vef <= -4.2e+183: tmp = t_5 + (NaChar / t_0) elif Vef <= -4.3e+40: tmp = t_3 + (NaChar / t_2) elif Vef <= -3e-41: tmp = t_4 elif Vef <= -3.8e-210: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= -2e-257: tmp = t_4 elif Vef <= 1.06e-268: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Vef <= 1.6e-221: tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 2.3e+149: tmp = t_4 else: tmp = t_5 + t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_2 = Float64(2.0 + Float64(EAccept / KbT)) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_1) t_5 = Float64(NdChar / t_0) tmp = 0.0 if (Vef <= -4.2e+183) tmp = Float64(t_5 + Float64(NaChar / t_0)); elseif (Vef <= -4.3e+40) tmp = Float64(t_3 + Float64(NaChar / t_2)); elseif (Vef <= -3e-41) tmp = t_4; elseif (Vef <= -3.8e-210) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= -2e-257) tmp = t_4; elseif (Vef <= 1.06e-268) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Vef <= 1.6e-221) tmp = Float64(t_3 + Float64(NaChar / Float64(Float64(t_2 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 2.3e+149) tmp = t_4; else tmp = Float64(t_5 + t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_2 = 2.0 + (EAccept / KbT); t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_4 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1; t_5 = NdChar / t_0; tmp = 0.0; if (Vef <= -4.2e+183) tmp = t_5 + (NaChar / t_0); elseif (Vef <= -4.3e+40) tmp = t_3 + (NaChar / t_2); elseif (Vef <= -3e-41) tmp = t_4; elseif (Vef <= -3.8e-210) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= -2e-257) tmp = t_4; elseif (Vef <= 1.06e-268) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Vef <= 1.6e-221) tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 2.3e+149) tmp = t_4; else tmp = t_5 + t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, Block[{t$95$5 = N[(NdChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -4.2e+183], N[(t$95$5 + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -4.3e+40], N[(t$95$3 + N[(NaChar / t$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -3e-41], t$95$4, If[LessEqual[Vef, -3.8e-210], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -2e-257], t$95$4, If[LessEqual[Vef, 1.06e-268], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.6e-221], N[(t$95$3 + N[(NaChar / N[(N[(t$95$2 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.3e+149], t$95$4, N[(t$95$5 + t$95$1), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_2 := 2 + \frac{EAccept}{KbT}\\
t_3 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_4 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t_1\\
t_5 := \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -4.2 \cdot 10^{+183}:\\
\;\;\;\;t_5 + \frac{NaChar}{t_0}\\
\mathbf{elif}\;Vef \leq -4.3 \cdot 10^{+40}:\\
\;\;\;\;t_3 + \frac{NaChar}{t_2}\\
\mathbf{elif}\;Vef \leq -3 \cdot 10^{-41}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -3.8 \cdot 10^{-210}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq -2 \cdot 10^{-257}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 1.06 \cdot 10^{-268}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.6 \cdot 10^{-221}:\\
\;\;\;\;t_3 + \frac{NaChar}{\left(t_2 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 2.3 \cdot 10^{+149}:\\
\;\;\;\;t_4\\
\mathbf{else}:\\
\;\;\;\;t_5 + t_1\\
\end{array}
\end{array}
if Vef < -4.2e183Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 99.9%
Taylor expanded in EAccept around 0 99.9%
+-commutative31.5%
Simplified99.9%
Taylor expanded in Vef around inf 99.9%
if -4.2e183 < Vef < -4.3000000000000002e40Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 77.4%
Taylor expanded in EAccept around 0 69.7%
if -4.3000000000000002e40 < Vef < -2.99999999999999989e-41 or -3.80000000000000003e-210 < Vef < -2e-257 or 1.60000000000000008e-221 < Vef < 2.2999999999999998e149Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.2%
Taylor expanded in EAccept around 0 68.2%
+-commutative46.5%
Simplified68.2%
if -2.99999999999999989e-41 < Vef < -3.80000000000000003e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 69.5%
Taylor expanded in Ec around inf 59.5%
associate-*r/59.5%
mul-1-neg59.5%
Simplified59.5%
if -2e-257 < Vef < 1.06e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.1%
Taylor expanded in mu around inf 82.0%
associate-*r/36.6%
mul-1-neg36.6%
Simplified82.0%
if 1.06e-268 < Vef < 1.60000000000000008e-221Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.3%
associate-+r+28.4%
+-commutative28.4%
Simplified76.3%
if 2.2999999999999998e149 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 97.4%
Taylor expanded in EAccept around 0 94.8%
+-commutative31.0%
Simplified94.8%
Final simplification75.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_2 (+ 2.0 (/ EAccept KbT)))
(t_3 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_4 (+ (/ NdChar t_0) (/ NaChar t_0)))
(t_5 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= Vef -2.65e+184)
t_4
(if (<= Vef -6.5e+33)
(+ t_3 (/ NaChar t_2))
(if (<= Vef -1.6e-207)
(+ t_5 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef 2.05e-222)
(+ t_3 (/ NaChar (- (+ t_2 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= Vef 6.8e-177)
t_1
(if (<= Vef 1.55e-103)
(+ t_5 t_1)
(if (<= Vef 7.5e+14) t_1 t_4)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((Ev / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = (NdChar / t_0) + (NaChar / t_0);
double t_5 = NdChar / (1.0 + exp((EDonor / KbT)));
double tmp;
if (Vef <= -2.65e+184) {
tmp = t_4;
} else if (Vef <= -6.5e+33) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -1.6e-207) {
tmp = t_5 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= 2.05e-222) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 6.8e-177) {
tmp = t_1;
} else if (Vef <= 1.55e-103) {
tmp = t_5 + t_1;
} else if (Vef <= 7.5e+14) {
tmp = t_1;
} else {
tmp = t_4;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((ev / kbt)))
t_2 = 2.0d0 + (eaccept / kbt)
t_3 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_4 = (ndchar / t_0) + (nachar / t_0)
t_5 = ndchar / (1.0d0 + exp((edonor / kbt)))
if (vef <= (-2.65d+184)) then
tmp = t_4
else if (vef <= (-6.5d+33)) then
tmp = t_3 + (nachar / t_2)
else if (vef <= (-1.6d-207)) then
tmp = t_5 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= 2.05d-222) then
tmp = t_3 + (nachar / ((t_2 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 6.8d-177) then
tmp = t_1
else if (vef <= 1.55d-103) then
tmp = t_5 + t_1
else if (vef <= 7.5d+14) then
tmp = t_1
else
tmp = t_4
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = (NdChar / t_0) + (NaChar / t_0);
double t_5 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double tmp;
if (Vef <= -2.65e+184) {
tmp = t_4;
} else if (Vef <= -6.5e+33) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -1.6e-207) {
tmp = t_5 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= 2.05e-222) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 6.8e-177) {
tmp = t_1;
} else if (Vef <= 1.55e-103) {
tmp = t_5 + t_1;
} else if (Vef <= 7.5e+14) {
tmp = t_1;
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((Ev / KbT))) t_2 = 2.0 + (EAccept / KbT) t_3 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_4 = (NdChar / t_0) + (NaChar / t_0) t_5 = NdChar / (1.0 + math.exp((EDonor / KbT))) tmp = 0 if Vef <= -2.65e+184: tmp = t_4 elif Vef <= -6.5e+33: tmp = t_3 + (NaChar / t_2) elif Vef <= -1.6e-207: tmp = t_5 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= 2.05e-222: tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 6.8e-177: tmp = t_1 elif Vef <= 1.55e-103: tmp = t_5 + t_1 elif Vef <= 7.5e+14: tmp = t_1 else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_2 = Float64(2.0 + Float64(EAccept / KbT)) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_4 = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)) t_5 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) tmp = 0.0 if (Vef <= -2.65e+184) tmp = t_4; elseif (Vef <= -6.5e+33) tmp = Float64(t_3 + Float64(NaChar / t_2)); elseif (Vef <= -1.6e-207) tmp = Float64(t_5 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= 2.05e-222) tmp = Float64(t_3 + Float64(NaChar / Float64(Float64(t_2 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 6.8e-177) tmp = t_1; elseif (Vef <= 1.55e-103) tmp = Float64(t_5 + t_1); elseif (Vef <= 7.5e+14) tmp = t_1; else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((Ev / KbT))); t_2 = 2.0 + (EAccept / KbT); t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_4 = (NdChar / t_0) + (NaChar / t_0); t_5 = NdChar / (1.0 + exp((EDonor / KbT))); tmp = 0.0; if (Vef <= -2.65e+184) tmp = t_4; elseif (Vef <= -6.5e+33) tmp = t_3 + (NaChar / t_2); elseif (Vef <= -1.6e-207) tmp = t_5 + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= 2.05e-222) tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 6.8e-177) tmp = t_1; elseif (Vef <= 1.55e-103) tmp = t_5 + t_1; elseif (Vef <= 7.5e+14) tmp = t_1; else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.65e+184], t$95$4, If[LessEqual[Vef, -6.5e+33], N[(t$95$3 + N[(NaChar / t$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.6e-207], N[(t$95$5 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.05e-222], N[(t$95$3 + N[(NaChar / N[(N[(t$95$2 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 6.8e-177], t$95$1, If[LessEqual[Vef, 1.55e-103], N[(t$95$5 + t$95$1), $MachinePrecision], If[LessEqual[Vef, 7.5e+14], t$95$1, t$95$4]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := 2 + \frac{EAccept}{KbT}\\
t_3 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_4 := \frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
t_5 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.65 \cdot 10^{+184}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -6.5 \cdot 10^{+33}:\\
\;\;\;\;t_3 + \frac{NaChar}{t_2}\\
\mathbf{elif}\;Vef \leq -1.6 \cdot 10^{-207}:\\
\;\;\;\;t_5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 2.05 \cdot 10^{-222}:\\
\;\;\;\;t_3 + \frac{NaChar}{\left(t_2 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 6.8 \cdot 10^{-177}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 1.55 \cdot 10^{-103}:\\
\;\;\;\;t_5 + t_1\\
\mathbf{elif}\;Vef \leq 7.5 \cdot 10^{+14}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if Vef < -2.65000000000000011e184 or 7.5e14 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.7%
Taylor expanded in EAccept around 0 85.5%
+-commutative32.3%
Simplified85.5%
Taylor expanded in Vef around inf 80.7%
if -2.65000000000000011e184 < Vef < -6.49999999999999993e33Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 72.3%
Taylor expanded in EAccept around 0 65.2%
if -6.49999999999999993e33 < Vef < -1.6000000000000002e-207Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.5%
Taylor expanded in EAccept around inf 59.0%
if -1.6000000000000002e-207 < Vef < 2.0500000000000002e-222Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.5%
associate-+r+31.0%
+-commutative31.0%
Simplified73.5%
if 2.0500000000000002e-222 < Vef < 6.8000000000000001e-177 or 1.5500000000000001e-103 < Vef < 7.5e14Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 69.9%
Taylor expanded in Ev around inf 45.1%
Taylor expanded in NdChar around 0 43.3%
if 6.8000000000000001e-177 < Vef < 1.5500000000000001e-103Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.4%
Taylor expanded in Ev around inf 66.4%
Final simplification68.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_2 (+ 2.0 (/ EAccept KbT)))
(t_3 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_4 (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_1))
(t_5 (/ NdChar t_0)))
(if (<= Vef -4.2e+183)
(+ t_5 (/ NaChar t_0))
(if (<= Vef -1.05e+41)
(+ t_3 (/ NaChar t_2))
(if (<= Vef -8e-84)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_1)
(if (<= Vef 1.25e-268)
t_4
(if (<= Vef 1.2e-221)
(+
t_3
(/ NaChar (- (+ t_2 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= Vef 2.1e+44) t_4 (+ t_5 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 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = (NdChar / (1.0 + exp((mu / KbT)))) + t_1;
double t_5 = NdChar / t_0;
double tmp;
if (Vef <= -4.2e+183) {
tmp = t_5 + (NaChar / t_0);
} else if (Vef <= -1.05e+41) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -8e-84) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1;
} else if (Vef <= 1.25e-268) {
tmp = t_4;
} else if (Vef <= 1.2e-221) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 2.1e+44) {
tmp = t_4;
} else {
tmp = t_5 + 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) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_2 = 2.0d0 + (eaccept / kbt)
t_3 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_4 = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_1
t_5 = ndchar / t_0
if (vef <= (-4.2d+183)) then
tmp = t_5 + (nachar / t_0)
else if (vef <= (-1.05d+41)) then
tmp = t_3 + (nachar / t_2)
else if (vef <= (-8d-84)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_1
else if (vef <= 1.25d-268) then
tmp = t_4
else if (vef <= 1.2d-221) then
tmp = t_3 + (nachar / ((t_2 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 2.1d+44) then
tmp = t_4
else
tmp = t_5 + 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 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_2 = 2.0 + (EAccept / KbT);
double t_3 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_4 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_1;
double t_5 = NdChar / t_0;
double tmp;
if (Vef <= -4.2e+183) {
tmp = t_5 + (NaChar / t_0);
} else if (Vef <= -1.05e+41) {
tmp = t_3 + (NaChar / t_2);
} else if (Vef <= -8e-84) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_1;
} else if (Vef <= 1.25e-268) {
tmp = t_4;
} else if (Vef <= 1.2e-221) {
tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 2.1e+44) {
tmp = t_4;
} else {
tmp = t_5 + t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_2 = 2.0 + (EAccept / KbT) t_3 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_4 = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_1 t_5 = NdChar / t_0 tmp = 0 if Vef <= -4.2e+183: tmp = t_5 + (NaChar / t_0) elif Vef <= -1.05e+41: tmp = t_3 + (NaChar / t_2) elif Vef <= -8e-84: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_1 elif Vef <= 1.25e-268: tmp = t_4 elif Vef <= 1.2e-221: tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 2.1e+44: tmp = t_4 else: tmp = t_5 + t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_2 = Float64(2.0 + Float64(EAccept / KbT)) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_1) t_5 = Float64(NdChar / t_0) tmp = 0.0 if (Vef <= -4.2e+183) tmp = Float64(t_5 + Float64(NaChar / t_0)); elseif (Vef <= -1.05e+41) tmp = Float64(t_3 + Float64(NaChar / t_2)); elseif (Vef <= -8e-84) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_1); elseif (Vef <= 1.25e-268) tmp = t_4; elseif (Vef <= 1.2e-221) tmp = Float64(t_3 + Float64(NaChar / Float64(Float64(t_2 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 2.1e+44) tmp = t_4; else tmp = Float64(t_5 + t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_2 = 2.0 + (EAccept / KbT); t_3 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_4 = (NdChar / (1.0 + exp((mu / KbT)))) + t_1; t_5 = NdChar / t_0; tmp = 0.0; if (Vef <= -4.2e+183) tmp = t_5 + (NaChar / t_0); elseif (Vef <= -1.05e+41) tmp = t_3 + (NaChar / t_2); elseif (Vef <= -8e-84) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1; elseif (Vef <= 1.25e-268) tmp = t_4; elseif (Vef <= 1.2e-221) tmp = t_3 + (NaChar / ((t_2 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 2.1e+44) tmp = t_4; else tmp = t_5 + t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, Block[{t$95$5 = N[(NdChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -4.2e+183], N[(t$95$5 + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.05e+41], N[(t$95$3 + N[(NaChar / t$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -8e-84], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[Vef, 1.25e-268], t$95$4, If[LessEqual[Vef, 1.2e-221], N[(t$95$3 + N[(NaChar / N[(N[(t$95$2 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.1e+44], t$95$4, N[(t$95$5 + t$95$1), $MachinePrecision]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_2 := 2 + \frac{EAccept}{KbT}\\
t_3 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_4 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t_1\\
t_5 := \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -4.2 \cdot 10^{+183}:\\
\;\;\;\;t_5 + \frac{NaChar}{t_0}\\
\mathbf{elif}\;Vef \leq -1.05 \cdot 10^{+41}:\\
\;\;\;\;t_3 + \frac{NaChar}{t_2}\\
\mathbf{elif}\;Vef \leq -8 \cdot 10^{-84}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t_1\\
\mathbf{elif}\;Vef \leq 1.25 \cdot 10^{-268}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 1.2 \cdot 10^{-221}:\\
\;\;\;\;t_3 + \frac{NaChar}{\left(t_2 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 2.1 \cdot 10^{+44}:\\
\;\;\;\;t_4\\
\mathbf{else}:\\
\;\;\;\;t_5 + t_1\\
\end{array}
\end{array}
if Vef < -4.2e183Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 99.9%
Taylor expanded in EAccept around 0 99.9%
+-commutative31.5%
Simplified99.9%
Taylor expanded in Vef around inf 99.9%
if -4.2e183 < Vef < -1.05e41Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 77.4%
Taylor expanded in EAccept around 0 69.7%
if -1.05e41 < Vef < -8.0000000000000003e-84Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 92.7%
Taylor expanded in EAccept around 0 89.7%
+-commutative61.7%
Simplified89.7%
if -8.0000000000000003e-84 < Vef < 1.25e-268 or 1.20000000000000012e-221 < Vef < 2.09999999999999987e44Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.9%
Taylor expanded in EAccept around 0 74.2%
+-commutative47.1%
Simplified74.2%
if 1.25e-268 < Vef < 1.20000000000000012e-221Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.3%
associate-+r+28.4%
+-commutative28.4%
Simplified76.3%
if 2.09999999999999987e44 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.3%
Taylor expanded in EAccept around 0 81.6%
+-commutative33.3%
Simplified81.6%
Final simplification79.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_3 (/ NdChar t_0)))
(if (<= Vef -7e+178)
(+ t_3 (/ NaChar t_0))
(if (<= Vef -2.2e-259)
t_2
(if (<= Vef 5e-265)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_1)
(if (<= Vef 6.3e+149) t_2 (+ t_3 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 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_2 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_3 = NdChar / t_0;
double tmp;
if (Vef <= -7e+178) {
tmp = t_3 + (NaChar / t_0);
} else if (Vef <= -2.2e-259) {
tmp = t_2;
} else if (Vef <= 5e-265) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_1;
} else if (Vef <= 6.3e+149) {
tmp = t_2;
} else {
tmp = t_3 + 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) :: t_3
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_2 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_3 = ndchar / t_0
if (vef <= (-7d+178)) then
tmp = t_3 + (nachar / t_0)
else if (vef <= (-2.2d-259)) then
tmp = t_2
else if (vef <= 5d-265) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_1
else if (vef <= 6.3d+149) then
tmp = t_2
else
tmp = t_3 + 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 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_2 = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_3 = NdChar / t_0;
double tmp;
if (Vef <= -7e+178) {
tmp = t_3 + (NaChar / t_0);
} else if (Vef <= -2.2e-259) {
tmp = t_2;
} else if (Vef <= 5e-265) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_1;
} else if (Vef <= 6.3e+149) {
tmp = t_2;
} else {
tmp = t_3 + t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_2 = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_3 = NdChar / t_0 tmp = 0 if Vef <= -7e+178: tmp = t_3 + (NaChar / t_0) elif Vef <= -2.2e-259: tmp = t_2 elif Vef <= 5e-265: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_1 elif Vef <= 6.3e+149: tmp = t_2 else: tmp = t_3 + t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_3 = Float64(NdChar / t_0) tmp = 0.0 if (Vef <= -7e+178) tmp = Float64(t_3 + Float64(NaChar / t_0)); elseif (Vef <= -2.2e-259) tmp = t_2; elseif (Vef <= 5e-265) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_1); elseif (Vef <= 6.3e+149) tmp = t_2; else tmp = Float64(t_3 + t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_2 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); t_3 = NdChar / t_0; tmp = 0.0; if (Vef <= -7e+178) tmp = t_3 + (NaChar / t_0); elseif (Vef <= -2.2e-259) tmp = t_2; elseif (Vef <= 5e-265) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_1; elseif (Vef <= 6.3e+149) tmp = t_2; else tmp = t_3 + t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -7e+178], N[(t$95$3 + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -2.2e-259], t$95$2, If[LessEqual[Vef, 5e-265], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[Vef, 6.3e+149], t$95$2, N[(t$95$3 + t$95$1), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_3 := \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+178}:\\
\;\;\;\;t_3 + \frac{NaChar}{t_0}\\
\mathbf{elif}\;Vef \leq -2.2 \cdot 10^{-259}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 5 \cdot 10^{-265}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t_1\\
\mathbf{elif}\;Vef \leq 6.3 \cdot 10^{+149}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_3 + t_1\\
\end{array}
\end{array}
if Vef < -7.00000000000000001e178Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 96.3%
Taylor expanded in EAccept around 0 96.3%
+-commutative29.9%
Simplified96.3%
Taylor expanded in Vef around inf 96.3%
if -7.00000000000000001e178 < Vef < -2.2000000000000001e-259 or 5.0000000000000001e-265 < Vef < 6.3e149Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.5%
if -2.2000000000000001e-259 < Vef < 5.0000000000000001e-265Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.8%
Taylor expanded in EAccept around 0 86.8%
+-commutative40.3%
Simplified86.8%
if 6.3e149 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 97.4%
Taylor expanded in EAccept around 0 94.8%
+-commutative31.0%
Simplified94.8%
Final simplification81.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -2.25e+105)
t_1
(if (<= EDonor -64000000000.0)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= EDonor -3.9e-37)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= EDonor 2.3e+25)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef 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 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -2.25e+105) {
tmp = t_1;
} else if (EDonor <= -64000000000.0) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (EDonor <= -3.9e-37) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (EDonor <= 2.3e+25) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-2.25d+105)) then
tmp = t_1
else if (edonor <= (-64000000000.0d0)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (edonor <= (-3.9d-37)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (edonor <= 2.3d+25) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -2.25e+105) {
tmp = t_1;
} else if (EDonor <= -64000000000.0) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (EDonor <= -3.9e-37) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (EDonor <= 2.3e+25) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -2.25e+105: tmp = t_1 elif EDonor <= -64000000000.0: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif EDonor <= -3.9e-37: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif EDonor <= 2.3e+25: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_1 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(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -2.25e+105) tmp = t_1; elseif (EDonor <= -64000000000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (EDonor <= -3.9e-37) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (EDonor <= 2.3e+25) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -2.25e+105) tmp = t_1; elseif (EDonor <= -64000000000.0) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (EDonor <= -3.9e-37) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (EDonor <= 2.3e+25) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -2.25e+105], t$95$1, If[LessEqual[EDonor, -64000000000.0], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -3.9e-37], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 2.3e+25], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -2.25 \cdot 10^{+105}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EDonor \leq -64000000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;EDonor \leq -3.9 \cdot 10^{-37}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 2.3 \cdot 10^{+25}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if EDonor < -2.2500000000000001e105 or 2.2999999999999998e25 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.1%
if -2.2500000000000001e105 < EDonor < -6.4e10Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 92.9%
Taylor expanded in EAccept around 0 86.0%
+-commutative37.2%
Simplified86.0%
if -6.4e10 < EDonor < -3.8999999999999999e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 63.3%
Taylor expanded in Ev around inf 21.7%
Taylor expanded in NdChar around 0 38.4%
if -3.8999999999999999e-37 < EDonor < 2.2999999999999998e25Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.6%
Final simplification80.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -5.3e+54)
t_2
(if (<= Vef 1.2e-268)
t_1
(if (<= Vef 6.2e-225)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= Vef 1.05e+27) 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 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -5.3e+54) {
tmp = t_2;
} else if (Vef <= 1.2e-268) {
tmp = t_1;
} else if (Vef <= 6.2e-225) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 1.05e+27) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-5.3d+54)) then
tmp = t_2
else if (vef <= 1.2d-268) then
tmp = t_1
else if (vef <= 6.2d-225) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 1.05d+27) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -5.3e+54) {
tmp = t_2;
} else if (Vef <= 1.2e-268) {
tmp = t_1;
} else if (Vef <= 6.2e-225) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 1.05e+27) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -5.3e+54: tmp = t_2 elif Vef <= 1.2e-268: tmp = t_1 elif Vef <= 6.2e-225: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 1.05e+27: tmp = t_1 else: tmp = t_2 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(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -5.3e+54) tmp = t_2; elseif (Vef <= 1.2e-268) tmp = t_1; elseif (Vef <= 6.2e-225) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 1.05e+27) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -5.3e+54) tmp = t_2; elseif (Vef <= 1.2e-268) tmp = t_1; elseif (Vef <= 6.2e-225) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 1.05e+27) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $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[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -5.3e+54], t$95$2, If[LessEqual[Vef, 1.2e-268], t$95$1, If[LessEqual[Vef, 6.2e-225], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.05e+27], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -5.3 \cdot 10^{+54}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 1.2 \cdot 10^{-268}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 6.2 \cdot 10^{-225}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 1.05 \cdot 10^{+27}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if Vef < -5.30000000000000018e54 or 1.04999999999999997e27 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
if -5.30000000000000018e54 < Vef < 1.1999999999999999e-268 or 6.19999999999999993e-225 < Vef < 1.04999999999999997e27Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.4%
if 1.1999999999999999e-268 < Vef < 6.19999999999999993e-225Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 86.2%
associate-+r+31.6%
+-commutative31.6%
Simplified86.2%
Final simplification83.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (+ 2.0 (/ EAccept KbT)))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_3 (+ (/ NdChar t_0) (/ NaChar t_0))))
(if (<= Vef -2.65e+184)
t_3
(if (<= Vef -6.4e+34)
(+ t_2 (/ NaChar t_1))
(if (<= Vef -2.45e-207)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef 8.2e-222)
(+ t_2 (/ NaChar (- (+ t_1 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= Vef 4.3e+15)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
t_3)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = 2.0 + (EAccept / KbT);
double t_2 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_3 = (NdChar / t_0) + (NaChar / t_0);
double tmp;
if (Vef <= -2.65e+184) {
tmp = t_3;
} else if (Vef <= -6.4e+34) {
tmp = t_2 + (NaChar / t_1);
} else if (Vef <= -2.45e-207) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= 8.2e-222) {
tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 4.3e+15) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = 2.0d0 + (eaccept / kbt)
t_2 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_3 = (ndchar / t_0) + (nachar / t_0)
if (vef <= (-2.65d+184)) then
tmp = t_3
else if (vef <= (-6.4d+34)) then
tmp = t_2 + (nachar / t_1)
else if (vef <= (-2.45d-207)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= 8.2d-222) then
tmp = t_2 + (nachar / ((t_1 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 4.3d+15) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = 2.0 + (EAccept / KbT);
double t_2 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_3 = (NdChar / t_0) + (NaChar / t_0);
double tmp;
if (Vef <= -2.65e+184) {
tmp = t_3;
} else if (Vef <= -6.4e+34) {
tmp = t_2 + (NaChar / t_1);
} else if (Vef <= -2.45e-207) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= 8.2e-222) {
tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 4.3e+15) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = 2.0 + (EAccept / KbT) t_2 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_3 = (NdChar / t_0) + (NaChar / t_0) tmp = 0 if Vef <= -2.65e+184: tmp = t_3 elif Vef <= -6.4e+34: tmp = t_2 + (NaChar / t_1) elif Vef <= -2.45e-207: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= 8.2e-222: tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 4.3e+15: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(2.0 + Float64(EAccept / KbT)) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_3 = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)) tmp = 0.0 if (Vef <= -2.65e+184) tmp = t_3; elseif (Vef <= -6.4e+34) tmp = Float64(t_2 + Float64(NaChar / t_1)); elseif (Vef <= -2.45e-207) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= 8.2e-222) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(t_1 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 4.3e+15) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = 2.0 + (EAccept / KbT); t_2 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_3 = (NdChar / t_0) + (NaChar / t_0); tmp = 0.0; if (Vef <= -2.65e+184) tmp = t_3; elseif (Vef <= -6.4e+34) tmp = t_2 + (NaChar / t_1); elseif (Vef <= -2.45e-207) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= 8.2e-222) tmp = t_2 + (NaChar / ((t_1 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 4.3e+15) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.65e+184], t$95$3, If[LessEqual[Vef, -6.4e+34], N[(t$95$2 + N[(NaChar / t$95$1), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -2.45e-207], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 8.2e-222], N[(t$95$2 + N[(NaChar / N[(N[(t$95$1 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.3e+15], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := 2 + \frac{EAccept}{KbT}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_3 := \frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
\mathbf{if}\;Vef \leq -2.65 \cdot 10^{+184}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -6.4 \cdot 10^{+34}:\\
\;\;\;\;t_2 + \frac{NaChar}{t_1}\\
\mathbf{elif}\;Vef \leq -2.45 \cdot 10^{-207}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 8.2 \cdot 10^{-222}:\\
\;\;\;\;t_2 + \frac{NaChar}{\left(t_1 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 4.3 \cdot 10^{+15}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -2.65000000000000011e184 or 4.3e15 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.7%
Taylor expanded in EAccept around 0 85.5%
+-commutative32.3%
Simplified85.5%
Taylor expanded in Vef around inf 80.7%
if -2.65000000000000011e184 < Vef < -6.3999999999999997e34Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 72.3%
Taylor expanded in EAccept around 0 65.2%
if -6.3999999999999997e34 < Vef < -2.45e-207Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.5%
Taylor expanded in EAccept around inf 59.0%
if -2.45e-207 < Vef < 8.2000000000000006e-222Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.1%
associate-+r+30.4%
+-commutative30.4%
Simplified72.1%
if 8.2000000000000006e-222 < Vef < 4.3e15Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.4%
Taylor expanded in Ev around inf 53.1%
Final simplification68.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))))
(if (<= mu -6.5e+143)
t_2
(if (<= mu 3e-50)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= mu 6.2e+104)
(+ (/ NdChar t_0) (/ NaChar t_0))
(if (<= mu 1.22e+148)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
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((Vef / KbT));
double t_1 = NdChar / (1.0 + exp((mu / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((-mu / KbT))));
double tmp;
if (mu <= -6.5e+143) {
tmp = t_2;
} else if (mu <= 3e-50) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (mu <= 6.2e+104) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else if (mu <= 1.22e+148) {
tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = ndchar / (1.0d0 + exp((mu / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((-mu / kbt))))
if (mu <= (-6.5d+143)) then
tmp = t_2
else if (mu <= 3d-50) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (mu <= 6.2d+104) then
tmp = (ndchar / t_0) + (nachar / t_0)
else if (mu <= 1.22d+148) then
tmp = t_1 + (nachar / (1.0d0 + exp((eaccept / kbt))))
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((Vef / KbT));
double t_1 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double tmp;
if (mu <= -6.5e+143) {
tmp = t_2;
} else if (mu <= 3e-50) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (mu <= 6.2e+104) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else if (mu <= 1.22e+148) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NdChar / (1.0 + math.exp((mu / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((-mu / KbT)))) tmp = 0 if mu <= -6.5e+143: tmp = t_2 elif mu <= 3e-50: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif mu <= 6.2e+104: tmp = (NdChar / t_0) + (NaChar / t_0) elif mu <= 1.22e+148: tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) tmp = 0.0 if (mu <= -6.5e+143) tmp = t_2; elseif (mu <= 3e-50) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (mu <= 6.2e+104) tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)); elseif (mu <= 1.22e+148) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); 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((Vef / KbT)); t_1 = NdChar / (1.0 + exp((mu / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((-mu / KbT)))); tmp = 0.0; if (mu <= -6.5e+143) tmp = t_2; elseif (mu <= 3e-50) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (mu <= 6.2e+104) tmp = (NdChar / t_0) + (NaChar / t_0); elseif (mu <= 1.22e+148) tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT)))); 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -6.5e+143], t$95$2, If[LessEqual[mu, 3e-50], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 6.2e+104], N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.22e+148], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{if}\;mu \leq -6.5 \cdot 10^{+143}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq 3 \cdot 10^{-50}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;mu \leq 6.2 \cdot 10^{+104}:\\
\;\;\;\;\frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
\mathbf{elif}\;mu \leq 1.22 \cdot 10^{+148}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if mu < -6.4999999999999997e143 or 1.22000000000000007e148 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.2%
Taylor expanded in mu around inf 77.9%
associate-*r/52.7%
mul-1-neg52.7%
Simplified77.9%
if -6.4999999999999997e143 < mu < 2.9999999999999999e-50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.8%
associate-+r+34.9%
+-commutative34.9%
Simplified62.8%
if 2.9999999999999999e-50 < mu < 6.20000000000000033e104Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 75.9%
Taylor expanded in EAccept around 0 75.9%
+-commutative37.3%
Simplified75.9%
Taylor expanded in Vef around inf 75.3%
if 6.20000000000000033e104 < mu < 1.22000000000000007e148Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 86.9%
Taylor expanded in EAccept around inf 70.2%
Final simplification68.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 2.0 (/ EAccept KbT)))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_2
(+ t_1 (/ NaChar (- (+ t_0 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT)))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_4 (+ t_3 (/ NdChar (+ 2.0 (/ EDonor KbT))))))
(if (<= NaChar -1.9e+121)
t_4
(if (<= NaChar -7.5e+105)
t_2
(if (<= NaChar -1.46e-25)
t_4
(if (<= NaChar -1.7e-194)
t_2
(if (<= NaChar 0.0037)
(+ t_1 (/ NaChar t_0))
(+ t_3 (/ NdChar (+ (/ mu 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 = 2.0 + (EAccept / KbT);
double t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
double t_3 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_4 = t_3 + (NdChar / (2.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -1.9e+121) {
tmp = t_4;
} else if (NaChar <= -7.5e+105) {
tmp = t_2;
} else if (NaChar <= -1.46e-25) {
tmp = t_4;
} else if (NaChar <= -1.7e-194) {
tmp = t_2;
} else if (NaChar <= 0.0037) {
tmp = t_1 + (NaChar / t_0);
} else {
tmp = t_3 + (NdChar / ((mu / 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) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = 2.0d0 + (eaccept / kbt)
t_1 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_2 = t_1 + (nachar / ((t_0 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
t_3 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_4 = t_3 + (ndchar / (2.0d0 + (edonor / kbt)))
if (nachar <= (-1.9d+121)) then
tmp = t_4
else if (nachar <= (-7.5d+105)) then
tmp = t_2
else if (nachar <= (-1.46d-25)) then
tmp = t_4
else if (nachar <= (-1.7d-194)) then
tmp = t_2
else if (nachar <= 0.0037d0) then
tmp = t_1 + (nachar / t_0)
else
tmp = t_3 + (ndchar / ((mu / 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 = 2.0 + (EAccept / KbT);
double t_1 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
double t_3 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_4 = t_3 + (NdChar / (2.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -1.9e+121) {
tmp = t_4;
} else if (NaChar <= -7.5e+105) {
tmp = t_2;
} else if (NaChar <= -1.46e-25) {
tmp = t_4;
} else if (NaChar <= -1.7e-194) {
tmp = t_2;
} else if (NaChar <= 0.0037) {
tmp = t_1 + (NaChar / t_0);
} else {
tmp = t_3 + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 2.0 + (EAccept / KbT) t_1 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_2 = t_1 + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) t_3 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_4 = t_3 + (NdChar / (2.0 + (EDonor / KbT))) tmp = 0 if NaChar <= -1.9e+121: tmp = t_4 elif NaChar <= -7.5e+105: tmp = t_2 elif NaChar <= -1.46e-25: tmp = t_4 elif NaChar <= -1.7e-194: tmp = t_2 elif NaChar <= 0.0037: tmp = t_1 + (NaChar / t_0) else: tmp = t_3 + (NdChar / ((mu / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(2.0 + Float64(EAccept / KbT)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(Float64(t_0 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_4 = Float64(t_3 + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))) tmp = 0.0 if (NaChar <= -1.9e+121) tmp = t_4; elseif (NaChar <= -7.5e+105) tmp = t_2; elseif (NaChar <= -1.46e-25) tmp = t_4; elseif (NaChar <= -1.7e-194) tmp = t_2; elseif (NaChar <= 0.0037) tmp = Float64(t_1 + Float64(NaChar / t_0)); else tmp = Float64(t_3 + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 2.0 + (EAccept / KbT); t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_2 = t_1 + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); t_3 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_4 = t_3 + (NdChar / (2.0 + (EDonor / KbT))); tmp = 0.0; if (NaChar <= -1.9e+121) tmp = t_4; elseif (NaChar <= -7.5e+105) tmp = t_2; elseif (NaChar <= -1.46e-25) tmp = t_4; elseif (NaChar <= -1.7e-194) tmp = t_2; elseif (NaChar <= 0.0037) tmp = t_1 + (NaChar / t_0); else tmp = t_3 + (NdChar / ((mu / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(N[(t$95$0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.9e+121], t$95$4, If[LessEqual[NaChar, -7.5e+105], t$95$2, If[LessEqual[NaChar, -1.46e-25], t$95$4, If[LessEqual[NaChar, -1.7e-194], t$95$2, If[LessEqual[NaChar, 0.0037], N[(t$95$1 + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], N[(t$95$3 + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 2 + \frac{EAccept}{KbT}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{\left(t_0 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_4 := t_3 + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{if}\;NaChar \leq -1.9 \cdot 10^{+121}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;NaChar \leq -7.5 \cdot 10^{+105}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq -1.46 \cdot 10^{-25}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;NaChar \leq -1.7 \cdot 10^{-194}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 0.0037:\\
\;\;\;\;t_1 + \frac{NaChar}{t_0}\\
\mathbf{else}:\\
\;\;\;\;t_3 + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -1.9e121 or -7.5000000000000002e105 < NaChar < -1.46e-25Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 68.9%
Taylor expanded in EDonor around 0 58.0%
if -1.9e121 < NaChar < -7.5000000000000002e105 or -1.46e-25 < NaChar < -1.70000000000000005e-194Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.5%
associate-+r+27.3%
+-commutative27.3%
Simplified78.5%
if -1.70000000000000005e-194 < NaChar < 0.0037000000000000002Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.9%
Taylor expanded in EAccept around 0 70.8%
if 0.0037000000000000002 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.9%
Taylor expanded in mu around 0 69.6%
+-commutative69.6%
Simplified69.6%
Final simplification68.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 2.0 (/ EAccept KbT)))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 2.0 (/ EDonor KbT))))))
(if (<= NaChar -4.8e+121)
t_2
(if (<= NaChar -4.8e+104)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (- (+ t_0 (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= NaChar -1.85e-25)
t_2
(if (<= NaChar 0.0095)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar t_0))
(+ t_1 (/ NdChar (+ (/ mu 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 = 2.0 + (EAccept / KbT);
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (2.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -4.8e+121) {
tmp = t_2;
} else if (NaChar <= -4.8e+104) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (NaChar <= -1.85e-25) {
tmp = t_2;
} else if (NaChar <= 0.0095) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / t_0);
} else {
tmp = t_1 + (NdChar / ((mu / 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 = 2.0d0 + (eaccept / kbt)
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_2 = t_1 + (ndchar / (2.0d0 + (edonor / kbt)))
if (nachar <= (-4.8d+121)) then
tmp = t_2
else if (nachar <= (-4.8d+104)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((t_0 + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (nachar <= (-1.85d-25)) then
tmp = t_2
else if (nachar <= 0.0095d0) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / t_0)
else
tmp = t_1 + (ndchar / ((mu / 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 = 2.0 + (EAccept / KbT);
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (2.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -4.8e+121) {
tmp = t_2;
} else if (NaChar <= -4.8e+104) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (NaChar <= -1.85e-25) {
tmp = t_2;
} else if (NaChar <= 0.0095) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / t_0);
} else {
tmp = t_1 + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 2.0 + (EAccept / KbT) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_2 = t_1 + (NdChar / (2.0 + (EDonor / KbT))) tmp = 0 if NaChar <= -4.8e+121: tmp = t_2 elif NaChar <= -4.8e+104: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif NaChar <= -1.85e-25: tmp = t_2 elif NaChar <= 0.0095: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / t_0) else: tmp = t_1 + (NdChar / ((mu / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(2.0 + Float64(EAccept / KbT)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))) tmp = 0.0 if (NaChar <= -4.8e+121) tmp = t_2; elseif (NaChar <= -4.8e+104) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(t_0 + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (NaChar <= -1.85e-25) tmp = t_2; elseif (NaChar <= 0.0095) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / t_0)); else tmp = Float64(t_1 + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 2.0 + (EAccept / KbT); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_2 = t_1 + (NdChar / (2.0 + (EDonor / KbT))); tmp = 0.0; if (NaChar <= -4.8e+121) tmp = t_2; elseif (NaChar <= -4.8e+104) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((t_0 + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (NaChar <= -1.85e-25) tmp = t_2; elseif (NaChar <= 0.0095) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / t_0); else tmp = t_1 + (NdChar / ((mu / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.8e+121], t$95$2, If[LessEqual[NaChar, -4.8e+104], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(t$95$0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.85e-25], t$95$2, If[LessEqual[NaChar, 0.0095], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 2 + \frac{EAccept}{KbT}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_2 := t_1 + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{if}\;NaChar \leq -4.8 \cdot 10^{+121}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq -4.8 \cdot 10^{+104}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\left(t_0 + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NaChar \leq -1.85 \cdot 10^{-25}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 0.0095:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{t_0}\\
\mathbf{else}:\\
\;\;\;\;t_1 + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -4.8e121 or -4.8e104 < NaChar < -1.85000000000000004e-25Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 68.9%
Taylor expanded in EDonor around 0 58.0%
if -4.8e121 < NaChar < -4.8e104Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.4%
Taylor expanded in KbT around inf 88.4%
associate-+r+23.7%
+-commutative23.7%
Simplified88.4%
if -1.85000000000000004e-25 < NaChar < 0.00949999999999999976Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.4%
Taylor expanded in EAccept around 0 67.9%
if 0.00949999999999999976 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.9%
Taylor expanded in mu around 0 69.6%
+-commutative69.6%
Simplified69.6%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -4.5e+56) (not (<= NaChar 0.00192)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.5e+56) || !(NaChar <= 0.00192)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4.5d+56)) .or. (.not. (nachar <= 0.00192d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + (eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.5e+56) || !(NaChar <= 0.00192)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.5e+56) or not (NaChar <= 0.00192): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.5e+56) || !(NaChar <= 0.00192)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.5e+56) || ~((NaChar <= 0.00192))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.5e+56], N[Not[LessEqual[NaChar, 0.00192]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - 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[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.5 \cdot 10^{+56} \lor \neg \left(NaChar \leq 0.00192\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if NaChar < -4.5000000000000003e56 or 0.00192000000000000005 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.9%
*-commutative57.9%
Simplified57.9%
if -4.5000000000000003e56 < NaChar < 0.00192000000000000005Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 77.6%
Taylor expanded in EAccept around 0 66.3%
Final simplification62.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -9.5e-26) (not (<= NaChar 0.0042)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -9.5e-26) || !(NaChar <= 0.0042)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-9.5d-26)) .or. (.not. (nachar <= 0.0042d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + (eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -9.5e-26) || !(NaChar <= 0.0042)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -9.5e-26) or not (NaChar <= 0.0042): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -9.5e-26) || !(NaChar <= 0.0042)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -9.5e-26) || ~((NaChar <= 0.0042))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -9.5e-26], N[Not[LessEqual[NaChar, 0.0042]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -9.5 \cdot 10^{-26} \lor \neg \left(NaChar \leq 0.0042\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if NaChar < -9.4999999999999995e-26 or 0.00419999999999999974 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.8%
Taylor expanded in EDonor around 0 60.8%
if -9.4999999999999995e-26 < NaChar < 0.00419999999999999974Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.4%
Taylor expanded in EAccept around 0 67.9%
Final simplification64.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= NaChar -1.1e-25)
(+ t_0 (/ NdChar (+ 2.0 (/ EDonor KbT))))
(if (<= NaChar 0.0028)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (/ EAccept KbT))))
(+ t_0 (/ NdChar (+ (/ mu 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 + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (NaChar <= -1.1e-25) {
tmp = t_0 + (NdChar / (2.0 + (EDonor / KbT)));
} else if (NaChar <= 0.0028) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT)));
} else {
tmp = t_0 + (NdChar / ((mu / 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 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (nachar <= (-1.1d-25)) then
tmp = t_0 + (ndchar / (2.0d0 + (edonor / kbt)))
else if (nachar <= 0.0028d0) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + (eaccept / kbt)))
else
tmp = t_0 + (ndchar / ((mu / 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 + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (NaChar <= -1.1e-25) {
tmp = t_0 + (NdChar / (2.0 + (EDonor / KbT)));
} else if (NaChar <= 0.0028) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT)));
} else {
tmp = t_0 + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if NaChar <= -1.1e-25: tmp = t_0 + (NdChar / (2.0 + (EDonor / KbT))) elif NaChar <= 0.0028: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT))) else: tmp = t_0 + (NdChar / ((mu / 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(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (NaChar <= -1.1e-25) tmp = Float64(t_0 + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); elseif (NaChar <= 0.0028) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); else tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(mu / 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 + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (NaChar <= -1.1e-25) tmp = t_0 + (NdChar / (2.0 + (EDonor / KbT))); elseif (NaChar <= 0.0028) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (EAccept / KbT))); else tmp = t_0 + (NdChar / ((mu / 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[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.1e-25], N[(t$95$0 + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.0028], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.1 \cdot 10^{-25}:\\
\;\;\;\;t_0 + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NaChar \leq 0.0028:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -1.1000000000000001e-25Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 67.2%
Taylor expanded in EDonor around 0 54.5%
if -1.1000000000000001e-25 < NaChar < 0.00279999999999999997Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.4%
Taylor expanded in EAccept around 0 67.9%
if 0.00279999999999999997 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.9%
Taylor expanded in mu around 0 69.6%
+-commutative69.6%
Simplified69.6%
Final simplification64.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.02e-25) (not (<= NaChar 5.3e-11)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.02e-25) || !(NaChar <= 5.3e-11)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.02d-25)) .or. (.not. (nachar <= 5.3d-11))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.02e-25) || !(NaChar <= 5.3e-11)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.02e-25) or not (NaChar <= 5.3e-11): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.02e-25) || !(NaChar <= 5.3e-11)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.02e-25) || ~((NaChar <= 5.3e-11))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); else tmp = NdChar / (1.0 + exp((EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.02e-25], N[Not[LessEqual[NaChar, 5.3e-11]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.02 \cdot 10^{-25} \lor \neg \left(NaChar \leq 5.3 \cdot 10^{-11}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -1.01999999999999998e-25 or 5.2999999999999998e-11 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.9%
*-commutative55.9%
Simplified55.9%
if -1.01999999999999998e-25 < NaChar < 5.2999999999999998e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 65.0%
Taylor expanded in Ev around inf 49.2%
Taylor expanded in NdChar around inf 54.4%
Final simplification55.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.3e+53) (not (<= NaChar 3.6e-11)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- 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.3e+53) || !(NaChar <= 3.6e-11)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (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.3d+53)) .or. (.not. (nachar <= 3.6d-11))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (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.3e+53) || !(NaChar <= 3.6e-11)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.3e+53) or not (NaChar <= 3.6e-11): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (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.3e+53) || !(NaChar <= 3.6e-11)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + 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.3e+53) || ~((NaChar <= 3.6e-11))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (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.3e+53], N[Not[LessEqual[NaChar, 3.6e-11]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - 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[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.3 \cdot 10^{+53} \lor \neg \left(NaChar \leq 3.6 \cdot 10^{-11}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.29999999999999999e53 or 3.59999999999999985e-11 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.2%
*-commutative57.2%
Simplified57.2%
if -1.29999999999999999e53 < NaChar < 3.59999999999999985e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.7%
Final simplification56.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.8e-25) (not (<= NaChar 2.9e-15))) (+ (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))) (* NdChar 0.5)) (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.8e-25) || !(NaChar <= 2.9e-15)) {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.8d-25)) .or. (.not. (nachar <= 2.9d-15))) then
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.8e-25) || !(NaChar <= 2.9e-15)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.8e-25) or not (NaChar <= 2.9e-15): tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.8e-25) || !(NaChar <= 2.9e-15)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.8e-25) || ~((NaChar <= 2.9e-15))) tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5); else tmp = NdChar / (1.0 + exp((EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.8e-25], N[Not[LessEqual[NaChar, 2.9e-15]], $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[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.8 \cdot 10^{-25} \lor \neg \left(NaChar \leq 2.9 \cdot 10^{-15}\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}}}\\
\end{array}
\end{array}
if NaChar < -1.8e-25 or 2.90000000000000019e-15 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.9%
*-commutative55.9%
Simplified55.9%
Taylor expanded in EAccept around 0 52.3%
+-commutative52.3%
Simplified52.3%
if -1.8e-25 < NaChar < 2.90000000000000019e-15Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 65.0%
Taylor expanded in Ev around inf 49.2%
Taylor expanded in NdChar around inf 54.4%
Final simplification53.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -2.25e+64)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= NaChar 0.00034)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(+ (/ 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 (NaChar <= -2.25e+64) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (NaChar <= 0.00034) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} 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 (nachar <= (-2.25d+64)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (nachar <= 0.00034d0) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
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 (NaChar <= -2.25e+64) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (NaChar <= 0.00034) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} 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 NaChar <= -2.25e+64: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif NaChar <= 0.00034: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) 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 (NaChar <= -2.25e+64) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (NaChar <= 0.00034) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); 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 (NaChar <= -2.25e+64) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (NaChar <= 0.00034) tmp = NdChar / (1.0 + exp((EDonor / KbT))); 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[NaChar, -2.25e+64], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.00034], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $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}\;NaChar \leq -2.25 \cdot 10^{+64}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 0.00034:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -2.24999999999999987e64Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 67.1%
Taylor expanded in Ev around inf 44.3%
Taylor expanded in NdChar around 0 39.5%
if -2.24999999999999987e64 < NaChar < 3.4e-4Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 64.9%
Taylor expanded in Ev around inf 46.7%
Taylor expanded in NdChar around inf 50.8%
if 3.4e-4 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.4%
*-commutative63.4%
Simplified63.4%
Taylor expanded in EAccept around inf 42.3%
Final simplification46.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -3.15e+122)
(+
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT)))
(* NdChar 0.5))
(if (<= KbT 3.35e+162)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(+ (/ NaChar 2.0) (+ (* NdChar 0.5) (* -0.25 (/ NdChar (/ KbT mu))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.15e+122) {
tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5);
} else if (KbT <= 3.35e+162) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else {
tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-3.15d+122)) then
tmp = (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt))) + (ndchar * 0.5d0)
else if (kbt <= 3.35d+162) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else
tmp = (nachar / 2.0d0) + ((ndchar * 0.5d0) + ((-0.25d0) * (ndchar / (kbt / mu))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.15e+122) {
tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5);
} else if (KbT <= 3.35e+162) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else {
tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -3.15e+122: tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5) elif KbT <= 3.35e+162: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) else: tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -3.15e+122) tmp = Float64(Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT))) + Float64(NdChar * 0.5)); elseif (KbT <= 3.35e+162) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); else tmp = Float64(Float64(NaChar / 2.0) + Float64(Float64(NdChar * 0.5) + Float64(-0.25 * Float64(NdChar / Float64(KbT / mu))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -3.15e+122) tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5); elseif (KbT <= 3.35e+162) tmp = NaChar / (1.0 + exp((Ev / KbT))); else tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -3.15e+122], N[(N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.35e+162], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(N[(NdChar * 0.5), $MachinePrecision] + N[(-0.25 * N[(NdChar / N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.15 \cdot 10^{+122}:\\
\;\;\;\;\frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 3.35 \cdot 10^{+162}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \left(NdChar \cdot 0.5 + -0.25 \cdot \frac{NdChar}{\frac{KbT}{mu}}\right)\\
\end{array}
\end{array}
if KbT < -3.1500000000000001e122Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.6%
*-commutative69.6%
Simplified69.6%
Taylor expanded in KbT around inf 61.6%
associate-+r+61.3%
+-commutative61.3%
Simplified61.6%
if -3.1500000000000001e122 < KbT < 3.34999999999999995e162Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 64.2%
Taylor expanded in Ev around inf 41.0%
Taylor expanded in NdChar around 0 29.2%
if 3.34999999999999995e162 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.5%
Taylor expanded in mu around inf 73.2%
associate-/l*77.4%
Simplified77.4%
Taylor expanded in KbT around inf 69.5%
Final simplification39.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -2.2e+82)
(+
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT)))
(* NdChar 0.5))
(if (<= KbT 1.04e+155)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(+ (/ NaChar 2.0) (+ (* NdChar 0.5) (* -0.25 (/ NdChar (/ KbT mu))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.2e+82) {
tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5);
} else if (KbT <= 1.04e+155) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else {
tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-2.2d+82)) then
tmp = (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt))) + (ndchar * 0.5d0)
else if (kbt <= 1.04d+155) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else
tmp = (nachar / 2.0d0) + ((ndchar * 0.5d0) + ((-0.25d0) * (ndchar / (kbt / mu))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.2e+82) {
tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5);
} else if (KbT <= 1.04e+155) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else {
tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -2.2e+82: tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5) elif KbT <= 1.04e+155: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) else: tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -2.2e+82) tmp = Float64(Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT))) + Float64(NdChar * 0.5)); elseif (KbT <= 1.04e+155) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); else tmp = Float64(Float64(NaChar / 2.0) + Float64(Float64(NdChar * 0.5) + Float64(-0.25 * Float64(NdChar / Float64(KbT / mu))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -2.2e+82) tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar * 0.5); elseif (KbT <= 1.04e+155) tmp = NdChar / (1.0 + exp((EDonor / KbT))); else tmp = (NaChar / 2.0) + ((NdChar * 0.5) + (-0.25 * (NdChar / (KbT / mu)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -2.2e+82], N[(N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.04e+155], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(N[(NdChar * 0.5), $MachinePrecision] + N[(-0.25 * N[(NdChar / N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.2 \cdot 10^{+82}:\\
\;\;\;\;\frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.04 \cdot 10^{+155}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \left(NdChar \cdot 0.5 + -0.25 \cdot \frac{NdChar}{\frac{KbT}{mu}}\right)\\
\end{array}
\end{array}
if KbT < -2.2000000000000001e82Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.0%
*-commutative68.0%
Simplified68.0%
Taylor expanded in KbT around inf 55.8%
associate-+r+55.5%
+-commutative55.5%
Simplified55.8%
if -2.2000000000000001e82 < KbT < 1.03999999999999996e155Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 64.2%
Taylor expanded in Ev around inf 41.1%
Taylor expanded in NdChar around inf 41.6%
if 1.03999999999999996e155 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.5%
Taylor expanded in mu around inf 74.0%
associate-/l*78.0%
Simplified78.0%
Taylor expanded in KbT around inf 68.0%
Final simplification47.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))) (/ NdChar (+ 1.0 (+ 1.0 (/ EDonor KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / (1.0 + (1.0 + (EDonor / 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 / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt))) + (ndchar / (1.0d0 + (1.0d0 + (edonor / 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 / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / (1.0 + (1.0 + (EDonor / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(EDonor / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}} + \frac{NdChar}{1 + \left(1 + \frac{EDonor}{KbT}\right)}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 67.7%
Taylor expanded in EDonor around 0 49.5%
Taylor expanded in KbT around inf 29.1%
associate-+r+29.1%
+-commutative29.1%
Simplified29.1%
Final simplification29.1%
(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 EDonor around inf 67.7%
Taylor expanded in Ev around inf 48.9%
Taylor expanded in KbT around inf 28.5%
+-commutative28.5%
distribute-lft-out28.5%
Simplified28.5%
Final simplification28.5%
herbie shell --seed 2024017
(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))))))