
(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 22 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - 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
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_2 (+ (/ NdChar t_0) (/ NaChar t_0)))
(t_3 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_4 (+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) t_3))
(t_5 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_3)))
(if (<= mu -2e+63)
t_1
(if (<= mu -9.5e-23)
t_2
(if (<= mu -2.2e-267)
t_4
(if (<= mu 2.95e-177)
t_2
(if (<= mu 5.2e-66)
t_5
(if (<= mu 1.3e-24)
t_4
(if (<= mu 6.3e+84)
t_5
(if (or (<= mu 3.8e+150) (not (<= mu 3.7e+183)))
t_1
(+
(/
NaChar
(+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))))
(/ Ec KbT)))))))))))))))
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)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_2 = (NdChar / t_0) + (NaChar / t_0);
double t_3 = NaChar / (1.0 + exp((Ev / KbT)));
double t_4 = (NdChar / (1.0 + exp((-Ec / KbT)))) + t_3;
double t_5 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_3;
double tmp;
if (mu <= -2e+63) {
tmp = t_1;
} else if (mu <= -9.5e-23) {
tmp = t_2;
} else if (mu <= -2.2e-267) {
tmp = t_4;
} else if (mu <= 2.95e-177) {
tmp = t_2;
} else if (mu <= 5.2e-66) {
tmp = t_5;
} else if (mu <= 1.3e-24) {
tmp = t_4;
} else if (mu <= 6.3e+84) {
tmp = t_5;
} else if ((mu <= 3.8e+150) || !(mu <= 3.7e+183)) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: 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 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_2 = (ndchar / t_0) + (nachar / t_0)
t_3 = nachar / (1.0d0 + exp((ev / kbt)))
t_4 = (ndchar / (1.0d0 + exp((-ec / kbt)))) + t_3
t_5 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_3
if (mu <= (-2d+63)) then
tmp = t_1
else if (mu <= (-9.5d-23)) then
tmp = t_2
else if (mu <= (-2.2d-267)) then
tmp = t_4
else if (mu <= 2.95d-177) then
tmp = t_2
else if (mu <= 5.2d-66) then
tmp = t_5
else if (mu <= 1.3d-24) then
tmp = t_4
else if (mu <= 6.3d+84) then
tmp = t_5
else if ((mu <= 3.8d+150) .or. (.not. (mu <= 3.7d+183))) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_2 = (NdChar / t_0) + (NaChar / t_0);
double t_3 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_4 = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + t_3;
double t_5 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_3;
double tmp;
if (mu <= -2e+63) {
tmp = t_1;
} else if (mu <= -9.5e-23) {
tmp = t_2;
} else if (mu <= -2.2e-267) {
tmp = t_4;
} else if (mu <= 2.95e-177) {
tmp = t_2;
} else if (mu <= 5.2e-66) {
tmp = t_5;
} else if (mu <= 1.3e-24) {
tmp = t_4;
} else if (mu <= 6.3e+84) {
tmp = t_5;
} else if ((mu <= 3.8e+150) || !(mu <= 3.7e+183)) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
}
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)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_2 = (NdChar / t_0) + (NaChar / t_0) t_3 = NaChar / (1.0 + math.exp((Ev / KbT))) t_4 = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + t_3 t_5 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_3 tmp = 0 if mu <= -2e+63: tmp = t_1 elif mu <= -9.5e-23: tmp = t_2 elif mu <= -2.2e-267: tmp = t_4 elif mu <= 2.95e-177: tmp = t_2 elif mu <= 5.2e-66: tmp = t_5 elif mu <= 1.3e-24: tmp = t_4 elif mu <= 6.3e+84: tmp = t_5 elif (mu <= 3.8e+150) or not (mu <= 3.7e+183): tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) 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(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_2 = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + t_3) t_5 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_3) tmp = 0.0 if (mu <= -2e+63) tmp = t_1; elseif (mu <= -9.5e-23) tmp = t_2; elseif (mu <= -2.2e-267) tmp = t_4; elseif (mu <= 2.95e-177) tmp = t_2; elseif (mu <= 5.2e-66) tmp = t_5; elseif (mu <= 1.3e-24) tmp = t_4; elseif (mu <= 6.3e+84) tmp = t_5; elseif ((mu <= 3.8e+150) || !(mu <= 3.7e+183)) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); 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)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_2 = (NdChar / t_0) + (NaChar / t_0); t_3 = NaChar / (1.0 + exp((Ev / KbT))); t_4 = (NdChar / (1.0 + exp((-Ec / KbT)))) + t_3; t_5 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_3; tmp = 0.0; if (mu <= -2e+63) tmp = t_1; elseif (mu <= -9.5e-23) tmp = t_2; elseif (mu <= -2.2e-267) tmp = t_4; elseif (mu <= 2.95e-177) tmp = t_2; elseif (mu <= 5.2e-66) tmp = t_5; elseif (mu <= 1.3e-24) tmp = t_4; elseif (mu <= 6.3e+84) tmp = t_5; elseif ((mu <= 3.8e+150) || ~((mu <= 3.7e+183))) tmp = t_1; else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))); 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[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision]}, Block[{t$95$5 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision]}, If[LessEqual[mu, -2e+63], t$95$1, If[LessEqual[mu, -9.5e-23], t$95$2, If[LessEqual[mu, -2.2e-267], t$95$4, If[LessEqual[mu, 2.95e-177], t$95$2, If[LessEqual[mu, 5.2e-66], t$95$5, If[LessEqual[mu, 1.3e-24], t$95$4, If[LessEqual[mu, 6.3e+84], t$95$5, If[Or[LessEqual[mu, 3.8e+150], N[Not[LessEqual[mu, 3.7e+183]], $MachinePrecision]], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_2 := \frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_4 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + t_3\\
t_5 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t_3\\
\mathbf{if}\;mu \leq -2 \cdot 10^{+63}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -9.5 \cdot 10^{-23}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2.2 \cdot 10^{-267}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;mu \leq 2.95 \cdot 10^{-177}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq 5.2 \cdot 10^{-66}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;mu \leq 1.3 \cdot 10^{-24}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;mu \leq 6.3 \cdot 10^{+84}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;mu \leq 3.8 \cdot 10^{+150} \lor \neg \left(mu \leq 3.7 \cdot 10^{+183}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\end{array}
\end{array}
if mu < -2.00000000000000012e63 or 6.30000000000000013e84 < mu < 3.79999999999999989e150 or 3.7000000000000001e183 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.4%
Taylor expanded in mu around inf 76.6%
associate-*r/39.6%
mul-1-neg39.6%
Simplified76.6%
if -2.00000000000000012e63 < mu < -9.50000000000000058e-23 or -2.19999999999999988e-267 < mu < 2.95e-177Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
Taylor expanded in Vef around inf 78.7%
if -9.50000000000000058e-23 < mu < -2.19999999999999988e-267 or 5.1999999999999998e-66 < mu < 1.3e-24Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 84.1%
associate-*r/84.1%
mul-1-neg84.1%
Simplified84.1%
Taylor expanded in Ev around inf 67.6%
if 2.95e-177 < mu < 5.1999999999999998e-66 or 1.3e-24 < mu < 6.30000000000000013e84Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.2%
Taylor expanded in Ev around inf 73.0%
if 3.79999999999999989e150 < mu < 3.7000000000000001e183Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 90.1%
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 t_0))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_3 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(t_4
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_5 (+ (/ NdChar t_0) t_1))
(t_6 (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(if (<= mu -1.25e+63)
t_4
(if (<= mu -9.8e-23)
t_5
(if (<= mu -2.1e-268)
(+ t_3 t_6)
(if (<= mu 4.5e-179)
t_5
(if (<= mu 5.8e-65)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_6)
(if (<= mu 1.3e-30)
(+ t_3 t_1)
(if (<= mu 5.2e+52)
(+ t_2 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (or (<= mu 3.8e+150) (not (<= mu 4e+183)))
t_4
(+
t_2
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))))
(/ Ec KbT)))))))))))))))
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 / t_0;
double t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_3 = NdChar / (1.0 + exp((-Ec / KbT)));
double t_4 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_5 = (NdChar / t_0) + t_1;
double t_6 = NaChar / (1.0 + exp((Ev / KbT)));
double tmp;
if (mu <= -1.25e+63) {
tmp = t_4;
} else if (mu <= -9.8e-23) {
tmp = t_5;
} else if (mu <= -2.1e-268) {
tmp = t_3 + t_6;
} else if (mu <= 4.5e-179) {
tmp = t_5;
} else if (mu <= 5.8e-65) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_6;
} else if (mu <= 1.3e-30) {
tmp = t_3 + t_1;
} else if (mu <= 5.2e+52) {
tmp = t_2 + (NdChar / (1.0 - (Ec / KbT)));
} else if ((mu <= 3.8e+150) || !(mu <= 4e+183)) {
tmp = t_4;
} else {
tmp = t_2 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: 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) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / t_0
t_2 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_3 = ndchar / (1.0d0 + exp((-ec / kbt)))
t_4 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_5 = (ndchar / t_0) + t_1
t_6 = nachar / (1.0d0 + exp((ev / kbt)))
if (mu <= (-1.25d+63)) then
tmp = t_4
else if (mu <= (-9.8d-23)) then
tmp = t_5
else if (mu <= (-2.1d-268)) then
tmp = t_3 + t_6
else if (mu <= 4.5d-179) then
tmp = t_5
else if (mu <= 5.8d-65) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_6
else if (mu <= 1.3d-30) then
tmp = t_3 + t_1
else if (mu <= 5.2d+52) then
tmp = t_2 + (ndchar / (1.0d0 - (ec / kbt)))
else if ((mu <= 3.8d+150) .or. (.not. (mu <= 4d+183))) then
tmp = t_4
else
tmp = t_2 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / t_0;
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_3 = NdChar / (1.0 + Math.exp((-Ec / KbT)));
double t_4 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_5 = (NdChar / t_0) + t_1;
double t_6 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double tmp;
if (mu <= -1.25e+63) {
tmp = t_4;
} else if (mu <= -9.8e-23) {
tmp = t_5;
} else if (mu <= -2.1e-268) {
tmp = t_3 + t_6;
} else if (mu <= 4.5e-179) {
tmp = t_5;
} else if (mu <= 5.8e-65) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_6;
} else if (mu <= 1.3e-30) {
tmp = t_3 + t_1;
} else if (mu <= 5.2e+52) {
tmp = t_2 + (NdChar / (1.0 - (Ec / KbT)));
} else if ((mu <= 3.8e+150) || !(mu <= 4e+183)) {
tmp = t_4;
} else {
tmp = t_2 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / t_0 t_2 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_3 = NdChar / (1.0 + math.exp((-Ec / KbT))) t_4 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_5 = (NdChar / t_0) + t_1 t_6 = NaChar / (1.0 + math.exp((Ev / KbT))) tmp = 0 if mu <= -1.25e+63: tmp = t_4 elif mu <= -9.8e-23: tmp = t_5 elif mu <= -2.1e-268: tmp = t_3 + t_6 elif mu <= 4.5e-179: tmp = t_5 elif mu <= 5.8e-65: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_6 elif mu <= 1.3e-30: tmp = t_3 + t_1 elif mu <= 5.2e+52: tmp = t_2 + (NdChar / (1.0 - (Ec / KbT))) elif (mu <= 3.8e+150) or not (mu <= 4e+183): tmp = t_4 else: tmp = t_2 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) 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 / t_0) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_5 = Float64(Float64(NdChar / t_0) + t_1) t_6 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) tmp = 0.0 if (mu <= -1.25e+63) tmp = t_4; elseif (mu <= -9.8e-23) tmp = t_5; elseif (mu <= -2.1e-268) tmp = Float64(t_3 + t_6); elseif (mu <= 4.5e-179) tmp = t_5; elseif (mu <= 5.8e-65) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_6); elseif (mu <= 1.3e-30) tmp = Float64(t_3 + t_1); elseif (mu <= 5.2e+52) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif ((mu <= 3.8e+150) || !(mu <= 4e+183)) tmp = t_4; else tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); 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 / t_0; t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_3 = NdChar / (1.0 + exp((-Ec / KbT))); t_4 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_5 = (NdChar / t_0) + t_1; t_6 = NaChar / (1.0 + exp((Ev / KbT))); tmp = 0.0; if (mu <= -1.25e+63) tmp = t_4; elseif (mu <= -9.8e-23) tmp = t_5; elseif (mu <= -2.1e-268) tmp = t_3 + t_6; elseif (mu <= 4.5e-179) tmp = t_5; elseif (mu <= 5.8e-65) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_6; elseif (mu <= 1.3e-30) tmp = t_3 + t_1; elseif (mu <= 5.2e+52) tmp = t_2 + (NdChar / (1.0 - (Ec / KbT))); elseif ((mu <= 3.8e+150) || ~((mu <= 4e+183))) tmp = t_4; else tmp = t_2 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))); 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 / t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[(NdChar / t$95$0), $MachinePrecision] + t$95$1), $MachinePrecision]}, Block[{t$95$6 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.25e+63], t$95$4, If[LessEqual[mu, -9.8e-23], t$95$5, If[LessEqual[mu, -2.1e-268], N[(t$95$3 + t$95$6), $MachinePrecision], If[LessEqual[mu, 4.5e-179], t$95$5, If[LessEqual[mu, 5.8e-65], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$6), $MachinePrecision], If[LessEqual[mu, 1.3e-30], N[(t$95$3 + t$95$1), $MachinePrecision], If[LessEqual[mu, 5.2e+52], N[(t$95$2 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[mu, 3.8e+150], N[Not[LessEqual[mu, 4e+183]], $MachinePrecision]], t$95$4, N[(t$95$2 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t_0}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_3 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
t_4 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_5 := \frac{NdChar}{t_0} + t_1\\
t_6 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;mu \leq -1.25 \cdot 10^{+63}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;mu \leq -9.8 \cdot 10^{-23}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;mu \leq -2.1 \cdot 10^{-268}:\\
\;\;\;\;t_3 + t_6\\
\mathbf{elif}\;mu \leq 4.5 \cdot 10^{-179}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;mu \leq 5.8 \cdot 10^{-65}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t_6\\
\mathbf{elif}\;mu \leq 1.3 \cdot 10^{-30}:\\
\;\;\;\;t_3 + t_1\\
\mathbf{elif}\;mu \leq 5.2 \cdot 10^{+52}:\\
\;\;\;\;t_2 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;mu \leq 3.8 \cdot 10^{+150} \lor \neg \left(mu \leq 4 \cdot 10^{+183}\right):\\
\;\;\;\;t_4\\
\mathbf{else}:\\
\;\;\;\;t_2 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\end{array}
\end{array}
if mu < -1.25000000000000003e63 or 5.2e52 < mu < 3.79999999999999989e150 or 3.99999999999999979e183 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.5%
Taylor expanded in mu around inf 76.0%
associate-*r/38.8%
mul-1-neg38.8%
Simplified76.0%
if -1.25000000000000003e63 < mu < -9.7999999999999996e-23 or -2.09999999999999998e-268 < mu < 4.49999999999999992e-179Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
Taylor expanded in Vef around inf 78.7%
if -9.7999999999999996e-23 < mu < -2.09999999999999998e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 81.1%
associate-*r/81.1%
mul-1-neg81.1%
Simplified81.1%
Taylor expanded in Ev around inf 66.7%
if 4.49999999999999992e-179 < mu < 5.7999999999999996e-65Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.7%
Taylor expanded in Ev around inf 76.9%
if 5.7999999999999996e-65 < mu < 1.29999999999999993e-30Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 100.0%
associate-*r/100.0%
mul-1-neg100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
if 1.29999999999999993e-30 < mu < 5.2e52Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.6%
Taylor expanded in Ec around inf 62.1%
neg-mul-162.1%
distribute-neg-frac62.1%
Simplified62.1%
if 3.79999999999999989e150 < mu < 3.99999999999999979e183Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 90.1%
Final simplification75.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))))
(t_3 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -1.08e+158)
t_3
(if (<= mu -1.15e-22)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu 4e-263)
t_2
(if (<= mu 6.2e-65)
t_1
(if (<= mu 4.2e-24) t_2 (if (<= mu 6.6e+50) t_1 t_3))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((-Ec / KbT))));
double t_3 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -1.08e+158) {
tmp = t_3;
} else if (mu <= -1.15e-22) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if (mu <= 4e-263) {
tmp = t_2;
} else if (mu <= 6.2e-65) {
tmp = t_1;
} else if (mu <= 4.2e-24) {
tmp = t_2;
} else if (mu <= 6.6e+50) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((-ec / kbt))))
t_3 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-1.08d+158)) then
tmp = t_3
else if (mu <= (-1.15d-22)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if (mu <= 4d-263) then
tmp = t_2
else if (mu <= 6.2d-65) then
tmp = t_1
else if (mu <= 4.2d-24) then
tmp = t_2
else if (mu <= 6.6d+50) then
tmp = t_1
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
double t_3 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -1.08e+158) {
tmp = t_3;
} else if (mu <= -1.15e-22) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if (mu <= 4e-263) {
tmp = t_2;
} else if (mu <= 6.2e-65) {
tmp = t_1;
} else if (mu <= 4.2e-24) {
tmp = t_2;
} else if (mu <= 6.6e+50) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((-Ec / KbT)))) t_3 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -1.08e+158: tmp = t_3 elif mu <= -1.15e-22: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif mu <= 4e-263: tmp = t_2 elif mu <= 6.2e-65: tmp = t_1 elif mu <= 4.2e-24: tmp = t_2 elif mu <= 6.6e+50: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))) t_3 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -1.08e+158) tmp = t_3; elseif (mu <= -1.15e-22) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (mu <= 4e-263) tmp = t_2; elseif (mu <= 6.2e-65) tmp = t_1; elseif (mu <= 4.2e-24) tmp = t_2; elseif (mu <= 6.6e+50) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((-Ec / KbT)))); t_3 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -1.08e+158) tmp = t_3; elseif (mu <= -1.15e-22) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif (mu <= 4e-263) tmp = t_2; elseif (mu <= 6.2e-65) tmp = t_1; elseif (mu <= 4.2e-24) tmp = t_2; elseif (mu <= 6.6e+50) tmp = t_1; else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - 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]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.08e+158], t$95$3, If[LessEqual[mu, -1.15e-22], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 4e-263], t$95$2, If[LessEqual[mu, 6.2e-65], t$95$1, If[LessEqual[mu, 4.2e-24], t$95$2, If[LessEqual[mu, 6.6e+50], t$95$1, t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t_0 + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
t_3 := t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.08 \cdot 10^{+158}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;mu \leq -1.15 \cdot 10^{-22}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;mu \leq 4 \cdot 10^{-263}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq 6.2 \cdot 10^{-65}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 4.2 \cdot 10^{-24}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq 6.6 \cdot 10^{+50}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if mu < -1.08e158 or 6.6000000000000001e50 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 90.1%
if -1.08e158 < mu < -1.1499999999999999e-22Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.2%
if -1.1499999999999999e-22 < mu < 4e-263 or 6.20000000000000032e-65 < mu < 4.1999999999999999e-24Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 84.2%
associate-*r/84.2%
mul-1-neg84.2%
Simplified84.2%
if 4e-263 < mu < 6.20000000000000032e-65 or 4.1999999999999999e-24 < mu < 6.6000000000000001e50Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 78.3%
Final simplification84.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 (- EAccept mu))) KbT)))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_3 (+ (/ NdChar t_0) (/ NaChar t_0))))
(if (<= mu -2.2e+63)
t_2
(if (<= mu -1.3e-22)
t_3
(if (<= mu -2e-291)
(+ t_1 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= mu 8.8e-176)
t_3
(if (<= mu 2.7e+86)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (or (<= mu 3.5e+150) (not (<= mu 3.7e+183)))
t_2
(+
t_1
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))))
(/ Ec KbT)))))))))))))
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 + (EAccept - mu))) / KbT)));
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_3 = (NdChar / t_0) + (NaChar / t_0);
double tmp;
if (mu <= -2.2e+63) {
tmp = t_2;
} else if (mu <= -1.3e-22) {
tmp = t_3;
} else if (mu <= -2e-291) {
tmp = t_1 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (mu <= 8.8e-176) {
tmp = t_3;
} else if (mu <= 2.7e+86) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if ((mu <= 3.5e+150) || !(mu <= 3.7e+183)) {
tmp = t_2;
} else {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: 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 + (eaccept - mu))) / kbt)))
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_3 = (ndchar / t_0) + (nachar / t_0)
if (mu <= (-2.2d+63)) then
tmp = t_2
else if (mu <= (-1.3d-22)) then
tmp = t_3
else if (mu <= (-2d-291)) then
tmp = t_1 + (ndchar / (1.0d0 + (edonor / kbt)))
else if (mu <= 8.8d-176) then
tmp = t_3
else if (mu <= 2.7d+86) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if ((mu <= 3.5d+150) .or. (.not. (mu <= 3.7d+183))) then
tmp = t_2
else
tmp = t_1 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_3 = (NdChar / t_0) + (NaChar / t_0);
double tmp;
if (mu <= -2.2e+63) {
tmp = t_2;
} else if (mu <= -1.3e-22) {
tmp = t_3;
} else if (mu <= -2e-291) {
tmp = t_1 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (mu <= 8.8e-176) {
tmp = t_3;
} else if (mu <= 2.7e+86) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if ((mu <= 3.5e+150) || !(mu <= 3.7e+183)) {
tmp = t_2;
} else {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
}
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 + (EAccept - mu))) / KbT))) t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_3 = (NdChar / t_0) + (NaChar / t_0) tmp = 0 if mu <= -2.2e+63: tmp = t_2 elif mu <= -1.3e-22: tmp = t_3 elif mu <= -2e-291: tmp = t_1 + (NdChar / (1.0 + (EDonor / KbT))) elif mu <= 8.8e-176: tmp = t_3 elif mu <= 2.7e+86: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif (mu <= 3.5e+150) or not (mu <= 3.7e+183): tmp = t_2 else: tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) 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(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_3 = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)) tmp = 0.0 if (mu <= -2.2e+63) tmp = t_2; elseif (mu <= -1.3e-22) tmp = t_3; elseif (mu <= -2e-291) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (mu <= 8.8e-176) tmp = t_3; elseif (mu <= 2.7e+86) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif ((mu <= 3.5e+150) || !(mu <= 3.7e+183)) tmp = t_2; else tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); 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 + (EAccept - mu))) / KbT))); t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_3 = (NdChar / t_0) + (NaChar / t_0); tmp = 0.0; if (mu <= -2.2e+63) tmp = t_2; elseif (mu <= -1.3e-22) tmp = t_3; elseif (mu <= -2e-291) tmp = t_1 + (NdChar / (1.0 + (EDonor / KbT))); elseif (mu <= 8.8e-176) tmp = t_3; elseif (mu <= 2.7e+86) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif ((mu <= 3.5e+150) || ~((mu <= 3.7e+183))) tmp = t_2; else tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))); 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.2e+63], t$95$2, If[LessEqual[mu, -1.3e-22], t$95$3, If[LessEqual[mu, -2e-291], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 8.8e-176], t$95$3, If[LessEqual[mu, 2.7e+86], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[mu, 3.5e+150], N[Not[LessEqual[mu, 3.7e+183]], $MachinePrecision]], t$95$2, N[(t$95$1 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_3 := \frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
\mathbf{if}\;mu \leq -2.2 \cdot 10^{+63}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -1.3 \cdot 10^{-22}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;mu \leq -2 \cdot 10^{-291}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;mu \leq 8.8 \cdot 10^{-176}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;mu \leq 2.7 \cdot 10^{+86}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 3.5 \cdot 10^{+150} \lor \neg \left(mu \leq 3.7 \cdot 10^{+183}\right):\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\end{array}
\end{array}
if mu < -2.1999999999999999e63 or 2.70000000000000018e86 < mu < 3.49999999999999984e150 or 3.7000000000000001e183 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.4%
Taylor expanded in mu around inf 76.6%
associate-*r/39.6%
mul-1-neg39.6%
Simplified76.6%
if -2.1999999999999999e63 < mu < -1.3e-22 or -1.99999999999999992e-291 < mu < 8.7999999999999994e-176Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
Taylor expanded in Vef around inf 81.9%
if -1.3e-22 < mu < -1.99999999999999992e-291Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in EDonor around inf 62.7%
if 8.7999999999999994e-176 < mu < 2.70000000000000018e86Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.7%
Taylor expanded in Ev around inf 67.1%
if 3.49999999999999984e150 < mu < 3.7000000000000001e183Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 90.1%
Final simplification72.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -7.8e+208)
t_1
(if (<= EDonor -1.45e+151)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (or (<= EDonor -2e-93) (not (<= EDonor 8e+130)))
t_1
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -7.8e+208) {
tmp = t_1;
} else if (EDonor <= -1.45e+151) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if ((EDonor <= -2e-93) || !(EDonor <= 8e+130)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-7.8d+208)) then
tmp = t_1
else if (edonor <= (-1.45d+151)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if ((edonor <= (-2d-93)) .or. (.not. (edonor <= 8d+130))) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -7.8e+208) {
tmp = t_1;
} else if (EDonor <= -1.45e+151) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if ((EDonor <= -2e-93) || !(EDonor <= 8e+130)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -7.8e+208: tmp = t_1 elif EDonor <= -1.45e+151: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif (EDonor <= -2e-93) or not (EDonor <= 8e+130): tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -7.8e+208) tmp = t_1; elseif (EDonor <= -1.45e+151) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif ((EDonor <= -2e-93) || !(EDonor <= 8e+130)) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -7.8e+208) tmp = t_1; elseif (EDonor <= -1.45e+151) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif ((EDonor <= -2e-93) || ~((EDonor <= 8e+130))) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, 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, -7.8e+208], t$95$1, If[LessEqual[EDonor, -1.45e+151], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[EDonor, -2e-93], N[Not[LessEqual[EDonor, 8e+130]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -7.8 \cdot 10^{+208}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EDonor \leq -1.45 \cdot 10^{+151}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;EDonor \leq -2 \cdot 10^{-93} \lor \neg \left(EDonor \leq 8 \cdot 10^{+130}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -7.8000000000000001e208 or -1.45000000000000009e151 < EDonor < -1.9999999999999998e-93 or 8.0000000000000005e130 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.5%
if -7.8000000000000001e208 < EDonor < -1.45000000000000009e151Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.0%
if -1.9999999999999998e-93 < EDonor < 8.0000000000000005e130Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.8%
Final simplification79.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))))
(if (or (<= Vef -6.8e+173) (not (<= Vef 2.5e+182)))
(+ (/ NdChar t_0) (/ NaChar t_0))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ 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 t_0 = 1.0 + exp((Vef / KbT));
double tmp;
if ((Vef <= -6.8e+173) || !(Vef <= 2.5e+182)) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (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) :: t_0
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
if ((vef <= (-6.8d+173)) .or. (.not. (vef <= 2.5d+182))) then
tmp = (ndchar / t_0) + (nachar / t_0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (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 t_0 = 1.0 + Math.exp((Vef / KbT));
double tmp;
if ((Vef <= -6.8e+173) || !(Vef <= 2.5e+182)) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) tmp = 0 if (Vef <= -6.8e+173) or not (Vef <= 2.5e+182): tmp = (NdChar / t_0) + (NaChar / t_0) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) tmp = 0.0 if ((Vef <= -6.8e+173) || !(Vef <= 2.5e+182)) tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + 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) t_0 = 1.0 + exp((Vef / KbT)); tmp = 0.0; if ((Vef <= -6.8e+173) || ~((Vef <= 2.5e+182))) tmp = (NdChar / t_0) + (NaChar / t_0); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); 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]}, If[Or[LessEqual[Vef, -6.8e+173], N[Not[LessEqual[Vef, 2.5e+182]], $MachinePrecision]], N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
\mathbf{if}\;Vef \leq -6.8 \cdot 10^{+173} \lor \neg \left(Vef \leq 2.5 \cdot 10^{+182}\right):\\
\;\;\;\;\frac{NdChar}{t_0} + \frac{NaChar}{t_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -6.80000000000000042e173 or 2.49999999999999987e182 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.1%
Taylor expanded in Vef around inf 79.0%
if -6.80000000000000042e173 < Vef < 2.49999999999999987e182Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.4%
Final simplification77.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= Vef -2.5e+165) (not (<= Vef 2.35e+182)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ 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 t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -2.5e+165) || !(Vef <= 2.35e+182)) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (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) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((vef <= (-2.5d+165)) .or. (.not. (vef <= 2.35d+182))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (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 t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -2.5e+165) || !(Vef <= 2.35e+182)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if (Vef <= -2.5e+165) or not (Vef <= 2.35e+182): tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((Vef <= -2.5e+165) || !(Vef <= 2.35e+182)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((Vef <= -2.5e+165) || ~((Vef <= 2.35e+182))) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[Vef, -2.5e+165], N[Not[LessEqual[Vef, 2.35e+182]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.5 \cdot 10^{+165} \lor \neg \left(Vef \leq 2.35 \cdot 10^{+182}\right):\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.49999999999999985e165 or 2.34999999999999992e182 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.1%
if -2.49999999999999985e165 < Vef < 2.34999999999999992e182Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.4%
Final simplification79.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (/ EDonor KbT))))))
(if (<= NaChar -6.8e-31)
t_0
(if (<= NaChar 9e-127)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* NaChar 0.5))
(if (<= NaChar 1.1e+112)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -6.8e-31) {
tmp = t_0;
} else if (NaChar <= 9e-127) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 1.1e+112) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (edonor / kbt)))
if (nachar <= (-6.8d-31)) then
tmp = t_0
else if (nachar <= 9d-127) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
else if (nachar <= 1.1d+112) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -6.8e-31) {
tmp = t_0;
} else if (NaChar <= 9e-127) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 1.1e+112) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))) tmp = 0 if NaChar <= -6.8e-31: tmp = t_0 elif NaChar <= 9e-127: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) elif NaChar <= 1.1e+112: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))) tmp = 0.0 if (NaChar <= -6.8e-31) tmp = t_0; elseif (NaChar <= 9e-127) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)); elseif (NaChar <= 1.1e+112) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))); tmp = 0.0; if (NaChar <= -6.8e-31) tmp = t_0; elseif (NaChar <= 9e-127) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); elseif (NaChar <= 1.1e+112) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.8e-31], t$95$0, If[LessEqual[NaChar, 9e-127], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.1e+112], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{-31}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-127}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{+112}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NaChar < -6.8000000000000002e-31 or 1.1e112 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.0%
Taylor expanded in EDonor around inf 68.7%
if -6.8000000000000002e-31 < NaChar < 8.9999999999999998e-127Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.1%
if 8.9999999999999998e-127 < NaChar < 1.1e112Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.2%
Taylor expanded in Ev around inf 63.3%
Final simplification64.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* NaChar 0.5)))
(t_2 (+ (/ mu KbT) (/ Vef KbT))))
(if (<= NdChar -3.3e+235)
t_1
(if (<= NdChar -4.1e+195)
(+
t_0
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (/ (* KbT (+ mu Vef)) (* KbT KbT))))
(/ Ec KbT)))))
(if (<= NdChar -1950000.0)
t_1
(if (<= NdChar 3e-7)
(+ t_0 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (or (<= NdChar 1e+67) (not (<= NdChar 4.5e+95)))
t_1
(+
t_0
(/
NdChar
(+
1.0
(-
(+
1.0
(/
(- (* (/ EDonor KbT) (/ EDonor KbT)) (* t_2 t_2))
(- (/ EDonor KbT) t_2)))
(/ Ec KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
double t_2 = (mu / KbT) + (Vef / KbT);
double tmp;
if (NdChar <= -3.3e+235) {
tmp = t_1;
} else if (NdChar <= -4.1e+195) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((KbT * (mu + Vef)) / (KbT * KbT)))) - (Ec / KbT))));
} else if (NdChar <= -1950000.0) {
tmp = t_1;
} else if (NdChar <= 3e-7) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if ((NdChar <= 1e+67) || !(NdChar <= 4.5e+95)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((((EDonor / KbT) * (EDonor / KbT)) - (t_2 * t_2)) / ((EDonor / KbT) - t_2))) - (Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
t_2 = (mu / kbt) + (vef / kbt)
if (ndchar <= (-3.3d+235)) then
tmp = t_1
else if (ndchar <= (-4.1d+195)) then
tmp = t_0 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((kbt * (mu + vef)) / (kbt * kbt)))) - (ec / kbt))))
else if (ndchar <= (-1950000.0d0)) then
tmp = t_1
else if (ndchar <= 3d-7) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else if ((ndchar <= 1d+67) .or. (.not. (ndchar <= 4.5d+95))) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + ((1.0d0 + ((((edonor / kbt) * (edonor / kbt)) - (t_2 * t_2)) / ((edonor / kbt) - t_2))) - (ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
double t_2 = (mu / KbT) + (Vef / KbT);
double tmp;
if (NdChar <= -3.3e+235) {
tmp = t_1;
} else if (NdChar <= -4.1e+195) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((KbT * (mu + Vef)) / (KbT * KbT)))) - (Ec / KbT))));
} else if (NdChar <= -1950000.0) {
tmp = t_1;
} else if (NdChar <= 3e-7) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if ((NdChar <= 1e+67) || !(NdChar <= 4.5e+95)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((((EDonor / KbT) * (EDonor / KbT)) - (t_2 * t_2)) / ((EDonor / KbT) - t_2))) - (Ec / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) t_2 = (mu / KbT) + (Vef / KbT) tmp = 0 if NdChar <= -3.3e+235: tmp = t_1 elif NdChar <= -4.1e+195: tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((KbT * (mu + Vef)) / (KbT * KbT)))) - (Ec / KbT)))) elif NdChar <= -1950000.0: tmp = t_1 elif NdChar <= 3e-7: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) elif (NdChar <= 1e+67) or not (NdChar <= 4.5e+95): tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((((EDonor / KbT) * (EDonor / KbT)) - (t_2 * t_2)) / ((EDonor / KbT) - t_2))) - (Ec / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)) t_2 = Float64(Float64(mu / KbT) + Float64(Vef / KbT)) tmp = 0.0 if (NdChar <= -3.3e+235) tmp = t_1; elseif (NdChar <= -4.1e+195) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(KbT * Float64(mu + Vef)) / Float64(KbT * KbT)))) - Float64(Ec / KbT))))); elseif (NdChar <= -1950000.0) tmp = t_1; elseif (NdChar <= 3e-7) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif ((NdChar <= 1e+67) || !(NdChar <= 4.5e+95)) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(Float64(Float64(EDonor / KbT) * Float64(EDonor / KbT)) - Float64(t_2 * t_2)) / Float64(Float64(EDonor / KbT) - t_2))) - Float64(Ec / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); t_2 = (mu / KbT) + (Vef / KbT); tmp = 0.0; if (NdChar <= -3.3e+235) tmp = t_1; elseif (NdChar <= -4.1e+195) tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((KbT * (mu + Vef)) / (KbT * KbT)))) - (Ec / KbT)))); elseif (NdChar <= -1950000.0) tmp = t_1; elseif (NdChar <= 3e-7) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); elseif ((NdChar <= 1e+67) || ~((NdChar <= 4.5e+95))) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((((EDonor / KbT) * (EDonor / KbT)) - (t_2 * t_2)) / ((EDonor / KbT) - t_2))) - (Ec / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.3e+235], t$95$1, If[LessEqual[NdChar, -4.1e+195], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(KbT * N[(mu + Vef), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1950000.0], t$95$1, If[LessEqual[NdChar, 3e-7], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, 1e+67], N[Not[LessEqual[NdChar, 4.5e+95]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] * N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] - N[(t$95$2 * t$95$2), $MachinePrecision]), $MachinePrecision] / N[(N[(EDonor / KbT), $MachinePrecision] - t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
t_2 := \frac{mu}{KbT} + \frac{Vef}{KbT}\\
\mathbf{if}\;NdChar \leq -3.3 \cdot 10^{+235}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -4.1 \cdot 10^{+195}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \frac{KbT \cdot \left(mu + Vef\right)}{KbT \cdot KbT}\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq -1950000:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 3 \cdot 10^{-7}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 10^{+67} \lor \neg \left(NdChar \leq 4.5 \cdot 10^{+95}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(\left(1 + \frac{\frac{EDonor}{KbT} \cdot \frac{EDonor}{KbT} - t_2 \cdot t_2}{\frac{EDonor}{KbT} - t_2}\right) - \frac{Ec}{KbT}\right)}\\
\end{array}
\end{array}
if NdChar < -3.30000000000000001e235 or -4.1e195 < NdChar < -1.95e6 or 2.9999999999999999e-7 < NdChar < 9.99999999999999983e66 or 4.50000000000000017e95 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.7%
if -3.30000000000000001e235 < NdChar < -4.1e195Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.5%
frac-add67.1%
Applied egg-rr67.1%
+-commutative67.1%
*-commutative67.1%
distribute-lft-in67.1%
Simplified67.1%
if -1.95e6 < NdChar < 2.9999999999999999e-7Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.0%
Taylor expanded in Ec around inf 70.3%
neg-mul-170.3%
distribute-neg-frac70.3%
Simplified70.3%
if 9.99999999999999983e66 < NdChar < 4.50000000000000017e95Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.1%
flip-+83.3%
Applied egg-rr83.3%
Final simplification67.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (/ EDonor KbT))))))
(if (<= NaChar -4e-31)
t_0
(if (<= NaChar 8e-121)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* NaChar 0.5))
(if (<= NaChar 31000000.0)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (- 1.0 (/ mu KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -4e-31) {
tmp = t_0;
} else if (NaChar <= 8e-121) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 31000000.0) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (edonor / kbt)))
if (nachar <= (-4d-31)) then
tmp = t_0
else if (nachar <= 8d-121) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
else if (nachar <= 31000000.0d0) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 - (mu / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -4e-31) {
tmp = t_0;
} else if (NaChar <= 8e-121) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 31000000.0) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))) tmp = 0 if NaChar <= -4e-31: tmp = t_0 elif NaChar <= 8e-121: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) elif NaChar <= 31000000.0: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))) tmp = 0.0 if (NaChar <= -4e-31) tmp = t_0; elseif (NaChar <= 8e-121) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)); elseif (NaChar <= 31000000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))); tmp = 0.0; if (NaChar <= -4e-31) tmp = t_0; elseif (NaChar <= 8e-121) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); elseif (NaChar <= 31000000.0) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4e-31], t$95$0, If[LessEqual[NaChar, 8e-121], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 31000000.0], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{if}\;NaChar \leq -4 \cdot 10^{-31}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 8 \cdot 10^{-121}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 31000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NaChar < -4e-31 or 3.1e7 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.5%
Taylor expanded in EDonor around inf 66.8%
if -4e-31 < NaChar < 7.9999999999999998e-121Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.0%
if 7.9999999999999998e-121 < NaChar < 3.1e7Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 81.8%
associate-*r/81.8%
mul-1-neg81.8%
Simplified81.8%
Taylor expanded in KbT around inf 44.1%
Taylor expanded in mu around inf 69.5%
neg-mul-169.5%
distribute-neg-frac69.5%
Simplified69.5%
Final simplification64.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))))
(if (<= NaChar -5.6e-35)
t_0
(if (<= NaChar 5.1e-140)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(if (<= NaChar 56000000.0)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (- 1.0 (/ mu KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -5.6e-35) {
tmp = t_0;
} else if (NaChar <= 5.1e-140) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else if (NaChar <= 56000000.0) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-5.6d-35)) then
tmp = t_0
else if (nachar <= 5.1d-140) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else if (nachar <= 56000000.0d0) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 - (mu / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -5.6e-35) {
tmp = t_0;
} else if (NaChar <= 5.1e-140) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else if (NaChar <= 56000000.0) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -5.6e-35: tmp = t_0 elif NaChar <= 5.1e-140: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) elif NaChar <= 56000000.0: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -5.6e-35) tmp = t_0; elseif (NaChar <= 5.1e-140) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); elseif (NaChar <= 56000000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -5.6e-35) tmp = t_0; elseif (NaChar <= 5.1e-140) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); elseif (NaChar <= 56000000.0) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5.6e-35], t$95$0, If[LessEqual[NaChar, 5.1e-140], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 56000000.0], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -5.6 \cdot 10^{-35}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 5.1 \cdot 10^{-140}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq 56000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NaChar < -5.5999999999999999e-35 or 5.6e7 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.6%
if -5.5999999999999999e-35 < NaChar < 5.1000000000000004e-140Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 67.7%
Taylor expanded in KbT around inf 43.6%
if 5.1000000000000004e-140 < NaChar < 5.6e7Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 77.0%
associate-*r/77.0%
mul-1-neg77.0%
Simplified77.0%
Taylor expanded in KbT around inf 43.7%
Taylor expanded in mu around inf 62.5%
neg-mul-162.5%
distribute-neg-frac62.5%
Simplified62.5%
Final simplification50.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))))
(if (<= NaChar -1.85e+58)
t_0
(if (<= NaChar 1.24e-120)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* NaChar 0.5))
(if (<= NaChar 42000000.0)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (- 1.0 (/ mu KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.85e+58) {
tmp = t_0;
} else if (NaChar <= 1.24e-120) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 42000000.0) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-1.85d+58)) then
tmp = t_0
else if (nachar <= 1.24d-120) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
else if (nachar <= 42000000.0d0) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 - (mu / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.85e+58) {
tmp = t_0;
} else if (NaChar <= 1.24e-120) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 42000000.0) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -1.85e+58: tmp = t_0 elif NaChar <= 1.24e-120: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) elif NaChar <= 42000000.0: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -1.85e+58) tmp = t_0; elseif (NaChar <= 1.24e-120) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)); elseif (NaChar <= 42000000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -1.85e+58) tmp = t_0; elseif (NaChar <= 1.24e-120) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); elseif (NaChar <= 42000000.0) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 - (mu / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.85e+58], t$95$0, If[LessEqual[NaChar, 1.24e-120], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 42000000.0], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -1.85 \cdot 10^{+58}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.24 \cdot 10^{-120}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 42000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NaChar < -1.8500000000000001e58 or 4.2e7 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.1%
if -1.8500000000000001e58 < NaChar < 1.2399999999999999e-120Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.1%
if 1.2399999999999999e-120 < NaChar < 4.2e7Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 81.8%
associate-*r/81.8%
mul-1-neg81.8%
Simplified81.8%
Taylor expanded in KbT around inf 44.1%
Taylor expanded in mu around inf 69.5%
neg-mul-169.5%
distribute-neg-frac69.5%
Simplified69.5%
Final simplification59.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -4.9e-36) (not (<= NaChar 6e-152)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ EDonor 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 <= -4.9e-36) || !(NaChar <= 6e-152)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / 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 <= (-4.9d-36)) .or. (.not. (nachar <= 6d-152))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / 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 <= -4.9e-36) || !(NaChar <= 6e-152)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.9e-36) or not (NaChar <= 6e-152): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.9e-36) || !(NaChar <= 6e-152)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.9e-36) || ~((NaChar <= 6e-152))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.9e-36], N[Not[LessEqual[NaChar, 6e-152]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.9 \cdot 10^{-36} \lor \neg \left(NaChar \leq 6 \cdot 10^{-152}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -4.8999999999999997e-36 or 6e-152 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.9%
if -4.8999999999999997e-36 < NaChar < 6e-152Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 68.0%
Taylor expanded in KbT around inf 43.4%
Final simplification48.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))
(if (<= NdChar -6.2e-220)
t_0
(if (<= NdChar 6.5e-185)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ (* NdChar KbT) mu))
(if (<= NdChar 1.26e+98)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (* NaChar 0.5)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -6.2e-220) {
tmp = t_0;
} else if (NdChar <= 6.5e-185) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + ((NdChar * KbT) / mu);
} else if (NdChar <= 1.26e+98) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-6.2d-220)) then
tmp = t_0
else if (ndchar <= 6.5d-185) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + ((ndchar * kbt) / mu)
else if (ndchar <= 1.26d+98) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -6.2e-220) {
tmp = t_0;
} else if (NdChar <= 6.5e-185) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + ((NdChar * KbT) / mu);
} else if (NdChar <= 1.26e+98) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -6.2e-220: tmp = t_0 elif NdChar <= 6.5e-185: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + ((NdChar * KbT) / mu) elif NdChar <= 1.26e+98: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -6.2e-220) tmp = t_0; elseif (NdChar <= 6.5e-185) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(Float64(NdChar * KbT) / mu)); elseif (NdChar <= 1.26e+98) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -6.2e-220) tmp = t_0; elseif (NdChar <= 6.5e-185) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + ((NdChar * KbT) / mu); elseif (NdChar <= 1.26e+98) tmp = t_0; else tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6.2e-220], t$95$0, If[LessEqual[NdChar, 6.5e-185], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(NdChar * KbT), $MachinePrecision] / mu), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.26e+98], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -6.2 \cdot 10^{-220}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 6.5 \cdot 10^{-185}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar \cdot KbT}{mu}\\
\mathbf{elif}\;NdChar \leq 1.26 \cdot 10^{+98}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -6.20000000000000023e-220 or 6.49999999999999946e-185 < NdChar < 1.25999999999999999e98Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.9%
Taylor expanded in KbT around inf 41.8%
if -6.20000000000000023e-220 < NdChar < 6.49999999999999946e-185Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.7%
Taylor expanded in mu around inf 58.4%
Taylor expanded in Vef around inf 43.3%
if 1.25999999999999999e98 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 66.8%
associate-*r/66.8%
mul-1-neg66.8%
Simplified66.8%
Taylor expanded in KbT around inf 44.0%
Final simplification42.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -4.6e+61)
(+ (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))) (* NdChar 0.5))
(if (<= NaChar -8.8e-38)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (* NaChar 0.5))
(if (<= NaChar 1.3e-148)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(+ (/ NaChar (+ 1.0 (exp (/ Ev 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 <= -4.6e+61) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5);
} else if (NaChar <= -8.8e-38) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 1.3e-148) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((Ev / 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 <= (-4.6d+61)) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar * 0.5d0)
else if (nachar <= (-8.8d-38)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar * 0.5d0)
else if (nachar <= 1.3d-148) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((ev / 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 <= -4.6e+61) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar * 0.5);
} else if (NaChar <= -8.8e-38) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 1.3e-148) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -4.6e+61: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar * 0.5) elif NaChar <= -8.8e-38: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar * 0.5) elif NaChar <= 1.3e-148: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -4.6e+61) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NaChar <= -8.8e-38) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar * 0.5)); elseif (NaChar <= 1.3e-148) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / 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 <= -4.6e+61) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5); elseif (NaChar <= -8.8e-38) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5); elseif (NaChar <= 1.3e-148) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -4.6e+61], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -8.8e-38], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.3e-148], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.6 \cdot 10^{+61}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq -8.8 \cdot 10^{-38}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{-148}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -4.5999999999999999e61Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.9%
Taylor expanded in mu around inf 44.6%
associate-*r/44.6%
mul-1-neg44.6%
Simplified44.6%
if -4.5999999999999999e61 < NaChar < -8.80000000000000029e-38Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 82.1%
Taylor expanded in KbT around inf 43.5%
if -8.80000000000000029e-38 < NaChar < 1.30000000000000004e-148Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 67.7%
Taylor expanded in KbT around inf 42.9%
if 1.30000000000000004e-148 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in Ev around inf 41.4%
Final simplification42.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -3.2e+112)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (<= Ev 3.6e-225)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -3.2e+112) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (Ev <= 3.6e-225) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-3.2d+112)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if (ev <= 3.6d-225) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -3.2e+112) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (Ev <= 3.6e-225) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -3.2e+112: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif Ev <= 3.6e-225: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -3.2e+112) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif (Ev <= 3.6e-225) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -3.2e+112) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif (Ev <= 3.6e-225) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -3.2e+112], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 3.6e-225], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -3.2 \cdot 10^{+112}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;Ev \leq 3.6 \cdot 10^{-225}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -3.19999999999999986e112Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 39.8%
Taylor expanded in Ev around inf 35.3%
if -3.19999999999999986e112 < Ev < 3.60000000000000009e-225Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.2%
Taylor expanded in KbT around inf 39.8%
if 3.60000000000000009e-225 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.2%
Taylor expanded in EAccept around inf 31.8%
Final simplification35.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 3.95e+133) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 3.95e+133) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 3.95d+133) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 3.95e+133) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 3.95e+133: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 3.95e+133) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 3.95e+133) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); else tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 3.95e+133], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 3.95 \cdot 10^{+133}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 3.94999999999999986e133Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.5%
Taylor expanded in Ev around inf 32.1%
if 3.94999999999999986e133 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 35.7%
Taylor expanded in EAccept around inf 35.7%
Final simplification32.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.8%
Taylor expanded in EAccept around inf 28.8%
Final simplification28.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 4.5e+14)
(+
(/
NdChar
(+
1.0
(- (+ 1.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT)))) (/ Ec KbT))))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(+ (* NdChar 0.5) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4.5e+14) {
tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else {
tmp = (NdChar * 0.5) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 4.5d+14) then
tmp = (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else
tmp = (ndchar * 0.5d0) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4.5e+14) {
tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else {
tmp = (NdChar * 0.5) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 4.5e+14: tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) else: tmp = (NdChar * 0.5) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 4.5e+14) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 4.5e+14) tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); else tmp = (NdChar * 0.5) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 4.5e+14], N[(N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 4.5 \cdot 10^{+14}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if EAccept < 4.5e14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.1%
Taylor expanded in KbT around inf 23.3%
if 4.5e14 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 39.4%
Taylor expanded in KbT around inf 24.2%
Final simplification23.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar 0.5) (/ NaChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar * 0.5d0) + (nachar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) + (NaChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) + Float64(NaChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) + (NaChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 + \frac{NaChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.8%
Taylor expanded in KbT around inf 23.3%
Final simplification23.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.9%
Taylor expanded in mu around inf 27.1%
Taylor expanded in KbT around inf 8.8%
Taylor expanded in KbT around 0 17.1%
Final simplification17.1%
herbie shell --seed 2023285
(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))))))