Bulmash initializePoisson

Percentage Accurate: 100.0% → 100.0%
Time: 19.7s
Alternatives: 24
Speedup: 1.0×

Specification

?
\[\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 (/ (- (- (- (- 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:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 24 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 100.0% accurate, 1.0× speedup?

\[\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 (/ (- (- (- (- 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}

Alternative 1: 100.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \end{array} \]
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
 :precision binary64
 (+
  (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
  (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
	return (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
    real(8), intent (in) :: ndchar
    real(8), intent (in) :: ec
    real(8), intent (in) :: vef
    real(8), intent (in) :: edonor
    real(8), intent (in) :: mu
    real(8), intent (in) :: kbt
    real(8), intent (in) :: nachar
    real(8), intent (in) :: ev
    real(8), intent (in) :: eaccept
    code = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
	return (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
	return (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
	return Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
	tmp = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}
\end{array}
Derivation
  1. Initial program 100.0%

    \[\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}}} \]
  2. Add Preprocessing
  3. Final simplification100.0%

    \[\leadsto \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \]
  4. Add Preprocessing

Alternative 2: 46.3% accurate, 0.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ t_2 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_1 \leq -2 \cdot 10^{-291}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-270}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_2 \cdot t\_2}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{elif}\;t\_1 \leq 10^{+27}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+191}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
 :precision binary64
 (let* ((t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
        (t_1
         (+
          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0))))
        (t_2 (+ EDonor (+ Vef (- mu Ec)))))
   (if (<= t_1 -5e-50)
     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
     (if (<= t_1 -2e-291)
       (/ NdChar (+ (exp (/ mu KbT)) 1.0))
       (if (<= t_1 5e-270)
         (/
          NdChar
          (-
           2.0
           (/
            (fma
             -0.5
             (/ (* t_2 t_2) KbT)
             (* Ec (- 1.0 (/ (+ EDonor (+ Vef mu)) Ec))))
            KbT)))
         (if (<= t_1 1e+27)
           t_0
           (if (<= t_1 4e+191)
             (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
             t_0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
	double t_0 = NdChar / (exp((EDonor / KbT)) + 1.0);
	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
	double t_2 = EDonor + (Vef + (mu - Ec));
	double tmp;
	if (t_1 <= -5e-50) {
		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
	} else if (t_1 <= -2e-291) {
		tmp = NdChar / (exp((mu / KbT)) + 1.0);
	} else if (t_1 <= 5e-270) {
		tmp = NdChar / (2.0 - (fma(-0.5, ((t_2 * t_2) / KbT), (Ec * (1.0 - ((EDonor + (Vef + mu)) / Ec)))) / KbT));
	} else if (t_1 <= 1e+27) {
		tmp = t_0;
	} else if (t_1 <= 4e+191) {
		tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
	} else {
		tmp = t_0;
	}
	return tmp;
}
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
	t_0 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))
	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
	t_2 = Float64(EDonor + Float64(Vef + Float64(mu - Ec)))
	tmp = 0.0
	if (t_1 <= -5e-50)
		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
	elseif (t_1 <= -2e-291)
		tmp = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0));
	elseif (t_1 <= 5e-270)
		tmp = Float64(NdChar / Float64(2.0 - Float64(fma(-0.5, Float64(Float64(t_2 * t_2) / KbT), Float64(Ec * Float64(1.0 - Float64(Float64(EDonor + Float64(Vef + mu)) / Ec)))) / KbT)));
	elseif (t_1 <= 1e+27)
		tmp = t_0;
	elseif (t_1 <= 4e+191)
		tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0));
	else
		tmp = t_0;
	end
	return tmp
end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -5e-50], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, -2e-291], N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 5e-270], N[(NdChar / N[(2.0 - N[(N[(-0.5 * N[(N[(t$95$2 * t$95$2), $MachinePrecision] / KbT), $MachinePrecision] + N[(Ec * N[(1.0 - N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 1e+27], t$95$0, If[LessEqual[t$95$1, 4e+191], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
t_2 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{-50}:\\
\;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\

\mathbf{elif}\;t\_1 \leq -2 \cdot 10^{-291}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\

\mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-270}:\\
\;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_2 \cdot t\_2}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\

\mathbf{elif}\;t\_1 \leq 10^{+27}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+191}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\

\mathbf{else}:\\
\;\;\;\;t\_0\\


\end{array}
\end{array}
Derivation
  1. Split input into 5 regimes
  2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -4.99999999999999968e-50

    1. Initial program 99.9%

      \[\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}}} \]
    2. Add Preprocessing
    3. Taylor expanded in KbT around inf

      \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
    4. Step-by-step derivation
      1. distribute-lft-outN/A

        \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
      2. *-lowering-*.f64N/A

        \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
      3. +-lowering-+.f6440.8

        \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
    5. Simplified40.8%

      \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
    6. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
      2. flip-+N/A

        \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
      3. associate-*l/N/A

        \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
      4. /-lowering-/.f64N/A

        \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
      5. *-lowering-*.f64N/A

        \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
      6. difference-of-squaresN/A

        \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
      7. *-lowering-*.f64N/A

        \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
      8. +-commutativeN/A

        \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
      9. +-lowering-+.f64N/A

        \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
      10. --lowering--.f64N/A

        \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
      11. --lowering--.f6423.5

        \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
    7. Applied egg-rr23.5%

      \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
    8. Step-by-step derivation
      1. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
      2. +-commutativeN/A

        \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
      3. *-commutativeN/A

        \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
      4. associate-*l*N/A

        \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
      5. *-lowering-*.f64N/A

        \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
      6. --lowering--.f64N/A

        \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
      7. *-lowering-*.f64N/A

        \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
      8. +-commutativeN/A

        \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
      9. +-lowering-+.f64N/A

        \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
      10. /-lowering-/.f64N/A

        \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
      11. --lowering--.f6440.8

        \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
    9. Applied egg-rr40.8%

      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

    if -4.99999999999999968e-50 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.99999999999999992e-291

    1. Initial program 100.0%

      \[\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}}} \]
    2. Add Preprocessing
    3. Taylor expanded in NdChar around inf

      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
    4. Step-by-step derivation
      1. /-lowering-/.f64N/A

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      2. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      3. exp-lowering-exp.f64N/A

        \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      4. /-lowering-/.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      5. associate--l+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
      6. sub-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
      7. associate-+r+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
      8. mul-1-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
      9. associate-+r+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
      10. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
      11. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
      12. mul-1-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
      13. sub-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
      14. --lowering--.f6465.4

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
    5. Simplified65.4%

      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
    6. Taylor expanded in mu around inf

      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]
    7. Step-by-step derivation
      1. /-lowering-/.f6450.0

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]
    8. Simplified50.0%

      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]

    if -1.99999999999999992e-291 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.9999999999999998e-270

    1. Initial program 100.0%

      \[\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}}} \]
    2. Add Preprocessing
    3. Taylor expanded in NdChar around inf

      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
    4. Step-by-step derivation
      1. /-lowering-/.f64N/A

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      2. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      3. exp-lowering-exp.f64N/A

        \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      4. /-lowering-/.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      5. associate--l+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
      6. sub-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
      7. associate-+r+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
      8. mul-1-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
      9. associate-+r+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
      10. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
      11. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
      12. mul-1-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
      13. sub-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
      14. --lowering--.f6495.5

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
    5. Simplified95.5%

      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
    6. Taylor expanded in KbT around -inf

      \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
    7. Step-by-step derivation
      1. mul-1-negN/A

        \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
      2. unsub-negN/A

        \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
      3. --lowering--.f64N/A

        \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
      4. /-lowering-/.f64N/A

        \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
    8. Simplified91.1%

      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
    9. Taylor expanded in Ec around inf

      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
    10. Step-by-step derivation
      1. *-lowering-*.f64N/A

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
      2. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \color{blue}{\left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
      3. mul-1-negN/A

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
      4. neg-lowering-neg.f64N/A

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
      5. /-lowering-/.f64N/A

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\color{blue}{\frac{EDonor + \left(Vef + mu\right)}{Ec}}\right)\right)\right)\right)}{KbT}} \]
      6. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\frac{\color{blue}{EDonor + \left(Vef + mu\right)}}{Ec}\right)\right)\right)\right)}{KbT}} \]
      7. +-lowering-+.f6493.4

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(-\frac{EDonor + \color{blue}{\left(Vef + mu\right)}}{Ec}\right)\right)\right)}{KbT}} \]
    11. Simplified93.4%

      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + \left(-\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)}{KbT}} \]

    if 4.9999999999999998e-270 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 1e27 or 4.00000000000000029e191 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

    1. Initial program 100.0%

      \[\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}}} \]
    2. Add Preprocessing
    3. Taylor expanded in NdChar around inf

      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
    4. Step-by-step derivation
      1. /-lowering-/.f64N/A

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      2. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      3. exp-lowering-exp.f64N/A

        \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      4. /-lowering-/.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      5. associate--l+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
      6. sub-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
      7. associate-+r+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
      8. mul-1-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
      9. associate-+r+N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
      10. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
      11. +-lowering-+.f64N/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
      12. mul-1-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
      13. sub-negN/A

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
      14. --lowering--.f6465.1

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
    5. Simplified65.1%

      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
    6. Taylor expanded in EDonor around inf

      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]
    7. Step-by-step derivation
      1. /-lowering-/.f6448.0

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]
    8. Simplified48.0%

      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]

    if 1e27 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.00000000000000029e191

    1. Initial program 100.0%

      \[\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}}} \]
    2. Add Preprocessing
    3. Taylor expanded in EAccept around inf

      \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
    4. Step-by-step derivation
      1. Simplified74.1%

        \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
      2. Taylor expanded in NdChar around 0

        \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
      3. Step-by-step derivation
        1. /-lowering-/.f64N/A

          \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{EAccept}{KbT}}}} \]
        3. exp-lowering-exp.f64N/A

          \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{EAccept}{KbT}}}} \]
        4. /-lowering-/.f6446.1

          \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{EAccept}{KbT}}}} \]
      4. Simplified46.1%

        \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
    5. Recombined 5 regimes into one program.
    6. Final simplification53.0%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -2 \cdot 10^{-291}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 5 \cdot 10^{-270}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{+27}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 4 \cdot 10^{+191}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \end{array} \]
    7. Add Preprocessing

    Alternative 3: 45.1% accurate, 0.2× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ t_2 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_1 \leq -1 \cdot 10^{-210}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-282}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_2 \cdot t\_2}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{elif}\;t\_1 \leq 10^{+27}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+191}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
    (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
     :precision binary64
     (let* ((t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
            (t_1
             (+
              (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
              (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0))))
            (t_2 (+ EDonor (+ Vef (- mu Ec)))))
       (if (<= t_1 -5e-50)
         (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
         (if (<= t_1 -1e-210)
           (/ NdChar (+ (exp (/ Vef KbT)) 1.0))
           (if (<= t_1 5e-282)
             (/
              NdChar
              (-
               2.0
               (/
                (fma
                 -0.5
                 (/ (* t_2 t_2) KbT)
                 (* Ec (- 1.0 (/ (+ EDonor (+ Vef mu)) Ec))))
                KbT)))
             (if (<= t_1 1e+27)
               t_0
               (if (<= t_1 4e+191)
                 (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
                 t_0)))))))
    double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
    	double t_0 = NdChar / (exp((EDonor / KbT)) + 1.0);
    	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
    	double t_2 = EDonor + (Vef + (mu - Ec));
    	double tmp;
    	if (t_1 <= -5e-50) {
    		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
    	} else if (t_1 <= -1e-210) {
    		tmp = NdChar / (exp((Vef / KbT)) + 1.0);
    	} else if (t_1 <= 5e-282) {
    		tmp = NdChar / (2.0 - (fma(-0.5, ((t_2 * t_2) / KbT), (Ec * (1.0 - ((EDonor + (Vef + mu)) / Ec)))) / KbT));
    	} else if (t_1 <= 1e+27) {
    		tmp = t_0;
    	} else if (t_1 <= 4e+191) {
    		tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
    	t_0 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))
    	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
    	t_2 = Float64(EDonor + Float64(Vef + Float64(mu - Ec)))
    	tmp = 0.0
    	if (t_1 <= -5e-50)
    		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
    	elseif (t_1 <= -1e-210)
    		tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0));
    	elseif (t_1 <= 5e-282)
    		tmp = Float64(NdChar / Float64(2.0 - Float64(fma(-0.5, Float64(Float64(t_2 * t_2) / KbT), Float64(Ec * Float64(1.0 - Float64(Float64(EDonor + Float64(Vef + mu)) / Ec)))) / KbT)));
    	elseif (t_1 <= 1e+27)
    		tmp = t_0;
    	elseif (t_1 <= 4e+191)
    		tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0));
    	else
    		tmp = t_0;
    	end
    	return tmp
    end
    
    code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -5e-50], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, -1e-210], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 5e-282], N[(NdChar / N[(2.0 - N[(N[(-0.5 * N[(N[(t$95$2 * t$95$2), $MachinePrecision] / KbT), $MachinePrecision] + N[(Ec * N[(1.0 - N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 1e+27], t$95$0, If[LessEqual[t$95$1, 4e+191], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
    t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
    t_2 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\
    \mathbf{if}\;t\_1 \leq -5 \cdot 10^{-50}:\\
    \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
    
    \mathbf{elif}\;t\_1 \leq -1 \cdot 10^{-210}:\\
    \;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
    
    \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-282}:\\
    \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_2 \cdot t\_2}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\
    
    \mathbf{elif}\;t\_1 \leq 10^{+27}:\\
    \;\;\;\;t\_0\\
    
    \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+191}:\\
    \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_0\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 5 regimes
    2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -4.99999999999999968e-50

      1. Initial program 99.9%

        \[\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}}} \]
      2. Add Preprocessing
      3. Taylor expanded in KbT around inf

        \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
      4. Step-by-step derivation
        1. distribute-lft-outN/A

          \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
        2. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
        3. +-lowering-+.f6440.8

          \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
      5. Simplified40.8%

        \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
      6. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
        2. flip-+N/A

          \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
        3. associate-*l/N/A

          \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
        4. /-lowering-/.f64N/A

          \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
        5. *-lowering-*.f64N/A

          \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
        6. difference-of-squaresN/A

          \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
        7. *-lowering-*.f64N/A

          \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
        8. +-commutativeN/A

          \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
        9. +-lowering-+.f64N/A

          \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
        10. --lowering--.f64N/A

          \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
        11. --lowering--.f6423.5

          \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
      7. Applied egg-rr23.5%

        \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
      8. Step-by-step derivation
        1. associate-/l*N/A

          \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
        2. +-commutativeN/A

          \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
        3. *-commutativeN/A

          \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
        4. associate-*l*N/A

          \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
        5. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
        6. --lowering--.f64N/A

          \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
        7. *-lowering-*.f64N/A

          \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
        8. +-commutativeN/A

          \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
        9. +-lowering-+.f64N/A

          \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
        10. /-lowering-/.f64N/A

          \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
        11. --lowering--.f6440.8

          \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
      9. Applied egg-rr40.8%

        \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

      if -4.99999999999999968e-50 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1e-210

      1. Initial program 100.0%

        \[\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}}} \]
      2. Add Preprocessing
      3. Taylor expanded in NdChar around inf

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      4. Step-by-step derivation
        1. /-lowering-/.f64N/A

          \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        3. exp-lowering-exp.f64N/A

          \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        4. /-lowering-/.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        5. associate--l+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
        6. sub-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
        7. associate-+r+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
        8. mul-1-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
        9. associate-+r+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
        10. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
        11. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
        12. mul-1-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
        13. sub-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
        14. --lowering--.f6469.8

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
      5. Simplified69.8%

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
      6. Taylor expanded in Vef around inf

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{Vef}{KbT}}}} \]
      7. Step-by-step derivation
        1. /-lowering-/.f6456.1

          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{Vef}{KbT}}}} \]
      8. Simplified56.1%

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{Vef}{KbT}}}} \]

      if -1e-210 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 5.0000000000000001e-282

      1. Initial program 100.0%

        \[\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}}} \]
      2. Add Preprocessing
      3. Taylor expanded in NdChar around inf

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      4. Step-by-step derivation
        1. /-lowering-/.f64N/A

          \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        3. exp-lowering-exp.f64N/A

          \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        4. /-lowering-/.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        5. associate--l+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
        6. sub-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
        7. associate-+r+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
        8. mul-1-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
        9. associate-+r+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
        10. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
        11. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
        12. mul-1-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
        13. sub-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
        14. --lowering--.f6493.4

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
      5. Simplified93.4%

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
      6. Taylor expanded in KbT around -inf

        \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
        2. unsub-negN/A

          \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
        3. --lowering--.f64N/A

          \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
        4. /-lowering-/.f64N/A

          \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
      8. Simplified86.9%

        \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
      9. Taylor expanded in Ec around inf

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
      10. Step-by-step derivation
        1. *-lowering-*.f64N/A

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \color{blue}{\left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
        3. mul-1-negN/A

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
        4. neg-lowering-neg.f64N/A

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
        5. /-lowering-/.f64N/A

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\color{blue}{\frac{EDonor + \left(Vef + mu\right)}{Ec}}\right)\right)\right)\right)}{KbT}} \]
        6. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\frac{\color{blue}{EDonor + \left(Vef + mu\right)}}{Ec}\right)\right)\right)\right)}{KbT}} \]
        7. +-lowering-+.f6489.1

          \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(-\frac{EDonor + \color{blue}{\left(Vef + mu\right)}}{Ec}\right)\right)\right)}{KbT}} \]
      11. Simplified89.1%

        \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + \left(-\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)}{KbT}} \]

      if 5.0000000000000001e-282 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 1e27 or 4.00000000000000029e191 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

      1. Initial program 100.0%

        \[\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}}} \]
      2. Add Preprocessing
      3. Taylor expanded in NdChar around inf

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
      4. Step-by-step derivation
        1. /-lowering-/.f64N/A

          \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        3. exp-lowering-exp.f64N/A

          \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        4. /-lowering-/.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
        5. associate--l+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
        6. sub-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
        7. associate-+r+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
        8. mul-1-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
        9. associate-+r+N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
        10. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
        11. +-lowering-+.f64N/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
        12. mul-1-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
        13. sub-negN/A

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
        14. --lowering--.f6464.8

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
      5. Simplified64.8%

        \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
      6. Taylor expanded in EDonor around inf

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]
      7. Step-by-step derivation
        1. /-lowering-/.f6448.2

          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]
      8. Simplified48.2%

        \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]

      if 1e27 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.00000000000000029e191

      1. Initial program 100.0%

        \[\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}}} \]
      2. Add Preprocessing
      3. Taylor expanded in EAccept around inf

        \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
      4. Step-by-step derivation
        1. Simplified74.1%

          \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
        2. Taylor expanded in NdChar around 0

          \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
        3. Step-by-step derivation
          1. /-lowering-/.f64N/A

            \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
          2. +-lowering-+.f64N/A

            \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{EAccept}{KbT}}}} \]
          3. exp-lowering-exp.f64N/A

            \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{EAccept}{KbT}}}} \]
          4. /-lowering-/.f6446.1

            \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{EAccept}{KbT}}}} \]
        4. Simplified46.1%

          \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
      5. Recombined 5 regimes into one program.
      6. Final simplification52.9%

        \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-210}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 5 \cdot 10^{-282}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{+27}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 4 \cdot 10^{+191}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \end{array} \]
      7. Add Preprocessing

      Alternative 4: 53.5% accurate, 0.3× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ t_1 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\ \mathbf{if}\;t\_0 \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ \mathbf{elif}\;t\_0 \leq -2 \cdot 10^{-291}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\ \mathbf{elif}\;t\_0 \leq 10^{-281}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_1 \cdot t\_1}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + NaChar \cdot 0.5\\ \end{array} \end{array} \]
      (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
       :precision binary64
       (let* ((t_0
               (+
                (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0))))
              (t_1 (+ EDonor (+ Vef (- mu Ec)))))
         (if (<= t_0 -5e-50)
           (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* NdChar 0.5))
           (if (<= t_0 -2e-291)
             (/ NdChar (+ (exp (/ mu KbT)) 1.0))
             (if (<= t_0 1e-281)
               (/
                NdChar
                (-
                 2.0
                 (/
                  (fma
                   -0.5
                   (/ (* t_1 t_1) KbT)
                   (* Ec (- 1.0 (/ (+ EDonor (+ Vef mu)) Ec))))
                  KbT)))
               (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (* 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 / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
      	double t_1 = EDonor + (Vef + (mu - Ec));
      	double tmp;
      	if (t_0 <= -5e-50) {
      		tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
      	} else if (t_0 <= -2e-291) {
      		tmp = NdChar / (exp((mu / KbT)) + 1.0);
      	} else if (t_0 <= 1e-281) {
      		tmp = NdChar / (2.0 - (fma(-0.5, ((t_1 * t_1) / KbT), (Ec * (1.0 - ((EDonor + (Vef + mu)) / Ec)))) / KbT));
      	} else {
      		tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar * 0.5);
      	}
      	return tmp;
      }
      
      function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
      	t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
      	t_1 = Float64(EDonor + Float64(Vef + Float64(mu - Ec)))
      	tmp = 0.0
      	if (t_0 <= -5e-50)
      		tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar * 0.5));
      	elseif (t_0 <= -2e-291)
      		tmp = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0));
      	elseif (t_0 <= 1e-281)
      		tmp = Float64(NdChar / Float64(2.0 - Float64(fma(-0.5, Float64(Float64(t_1 * t_1) / KbT), Float64(Ec * Float64(1.0 - Float64(Float64(EDonor + Float64(Vef + mu)) / Ec)))) / KbT)));
      	else
      		tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar * 0.5));
      	end
      	return tmp
      end
      
      code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -5e-50], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, -2e-291], N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e-281], N[(NdChar / N[(2.0 - N[(N[(-0.5 * N[(N[(t$95$1 * t$95$1), $MachinePrecision] / KbT), $MachinePrecision] + N[(Ec * N[(1.0 - N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
      t_1 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\
      \mathbf{if}\;t\_0 \leq -5 \cdot 10^{-50}:\\
      \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\
      
      \mathbf{elif}\;t\_0 \leq -2 \cdot 10^{-291}:\\
      \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
      
      \mathbf{elif}\;t\_0 \leq 10^{-281}:\\
      \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_1 \cdot t\_1}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\
      
      \mathbf{else}:\\
      \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + NaChar \cdot 0.5\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 4 regimes
      2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -4.99999999999999968e-50

        1. Initial program 99.9%

          \[\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}}} \]
        2. Add Preprocessing
        3. Taylor expanded in EAccept around inf

          \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
        4. Step-by-step derivation
          1. Simplified81.3%

            \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
          2. Taylor expanded in KbT around inf

            \[\leadsto \color{blue}{\frac{1}{2} \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
          3. Step-by-step derivation
            1. *-lowering-*.f6459.6

              \[\leadsto \color{blue}{0.5 \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
          4. Simplified59.6%

            \[\leadsto \color{blue}{0.5 \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]

          if -4.99999999999999968e-50 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.99999999999999992e-291

          1. Initial program 100.0%

            \[\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}}} \]
          2. Add Preprocessing
          3. Taylor expanded in NdChar around inf

            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
          4. Step-by-step derivation
            1. /-lowering-/.f64N/A

              \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            2. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            3. exp-lowering-exp.f64N/A

              \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            4. /-lowering-/.f64N/A

              \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            5. associate--l+N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
            6. sub-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
            7. associate-+r+N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
            8. mul-1-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
            9. associate-+r+N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
            10. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
            11. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
            12. mul-1-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
            13. sub-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
            14. --lowering--.f6465.4

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
          5. Simplified65.4%

            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
          6. Taylor expanded in mu around inf

            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]
          7. Step-by-step derivation
            1. /-lowering-/.f6450.0

              \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]
          8. Simplified50.0%

            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]

          if -1.99999999999999992e-291 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 1e-281

          1. Initial program 100.0%

            \[\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}}} \]
          2. Add Preprocessing
          3. Taylor expanded in NdChar around inf

            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
          4. Step-by-step derivation
            1. /-lowering-/.f64N/A

              \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            2. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            3. exp-lowering-exp.f64N/A

              \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            4. /-lowering-/.f64N/A

              \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
            5. associate--l+N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
            6. sub-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
            7. associate-+r+N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
            8. mul-1-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
            9. associate-+r+N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
            10. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
            11. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
            12. mul-1-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
            13. sub-negN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
            14. --lowering--.f6497.7

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
          5. Simplified97.7%

            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
          6. Taylor expanded in KbT around -inf

            \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
          7. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
            2. unsub-negN/A

              \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
            3. --lowering--.f64N/A

              \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
            4. /-lowering-/.f64N/A

              \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
          8. Simplified93.2%

            \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
          9. Taylor expanded in Ec around inf

            \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
          10. Step-by-step derivation
            1. *-lowering-*.f64N/A

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
            2. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \color{blue}{\left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
            3. mul-1-negN/A

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
            4. neg-lowering-neg.f64N/A

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
            5. /-lowering-/.f64N/A

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\color{blue}{\frac{EDonor + \left(Vef + mu\right)}{Ec}}\right)\right)\right)\right)}{KbT}} \]
            6. +-lowering-+.f64N/A

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\frac{\color{blue}{EDonor + \left(Vef + mu\right)}}{Ec}\right)\right)\right)\right)}{KbT}} \]
            7. +-lowering-+.f6495.5

              \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(-\frac{EDonor + \color{blue}{\left(Vef + mu\right)}}{Ec}\right)\right)\right)}{KbT}} \]
          11. Simplified95.5%

            \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + \left(-\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)}{KbT}} \]

          if 1e-281 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

          1. Initial program 100.0%

            \[\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}}} \]
          2. Add Preprocessing
          3. Taylor expanded in KbT around inf

            \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \color{blue}{\frac{1}{2} \cdot NaChar} \]
          4. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \color{blue}{NaChar \cdot \frac{1}{2}} \]
            2. *-lowering-*.f6460.0

              \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \color{blue}{NaChar \cdot 0.5} \]
          5. Simplified60.0%

            \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \color{blue}{NaChar \cdot 0.5} \]
          6. Taylor expanded in EDonor around inf

            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor}}{KbT}}} + NaChar \cdot \frac{1}{2} \]
          7. Step-by-step derivation
            1. Simplified48.6%

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor}}{KbT}}} + NaChar \cdot 0.5 \]
          8. Recombined 4 regimes into one program.
          9. Final simplification59.3%

            \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -2 \cdot 10^{-291}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-281}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + NaChar \cdot 0.5\\ \end{array} \]
          10. Add Preprocessing

          Alternative 5: 53.9% accurate, 0.3× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ t_2 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{-50}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq -2 \cdot 10^{-291}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\ \mathbf{elif}\;t\_1 \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_2 \cdot t\_2}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
           :precision binary64
           (let* ((t_0 (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* NdChar 0.5)))
                  (t_1
                   (+
                    (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                    (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0))))
                  (t_2 (+ EDonor (+ Vef (- mu Ec)))))
             (if (<= t_1 -5e-50)
               t_0
               (if (<= t_1 -2e-291)
                 (/ NdChar (+ (exp (/ mu KbT)) 1.0))
                 (if (<= t_1 1e-240)
                   (/
                    NdChar
                    (-
                     2.0
                     (/
                      (fma
                       -0.5
                       (/ (* t_2 t_2) KbT)
                       (* Ec (- 1.0 (/ (+ EDonor (+ Vef mu)) Ec))))
                      KbT)))
                   t_0)))))
          double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
          	double t_0 = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
          	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
          	double t_2 = EDonor + (Vef + (mu - Ec));
          	double tmp;
          	if (t_1 <= -5e-50) {
          		tmp = t_0;
          	} else if (t_1 <= -2e-291) {
          		tmp = NdChar / (exp((mu / KbT)) + 1.0);
          	} else if (t_1 <= 1e-240) {
          		tmp = NdChar / (2.0 - (fma(-0.5, ((t_2 * t_2) / KbT), (Ec * (1.0 - ((EDonor + (Vef + mu)) / Ec)))) / KbT));
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
          	t_0 = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar * 0.5))
          	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
          	t_2 = Float64(EDonor + Float64(Vef + Float64(mu - Ec)))
          	tmp = 0.0
          	if (t_1 <= -5e-50)
          		tmp = t_0;
          	elseif (t_1 <= -2e-291)
          		tmp = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0));
          	elseif (t_1 <= 1e-240)
          		tmp = Float64(NdChar / Float64(2.0 - Float64(fma(-0.5, Float64(Float64(t_2 * t_2) / KbT), Float64(Ec * Float64(1.0 - Float64(Float64(EDonor + Float64(Vef + mu)) / Ec)))) / KbT)));
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -5e-50], t$95$0, If[LessEqual[t$95$1, -2e-291], N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 1e-240], N[(NdChar / N[(2.0 - N[(N[(-0.5 * N[(N[(t$95$2 * t$95$2), $MachinePrecision] / KbT), $MachinePrecision] + N[(Ec * N[(1.0 - N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\
          t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
          t_2 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\
          \mathbf{if}\;t\_1 \leq -5 \cdot 10^{-50}:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;t\_1 \leq -2 \cdot 10^{-291}:\\
          \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
          
          \mathbf{elif}\;t\_1 \leq 10^{-240}:\\
          \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_2 \cdot t\_2}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 3 regimes
          2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -4.99999999999999968e-50 or 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

            1. Initial program 100.0%

              \[\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}}} \]
            2. Add Preprocessing
            3. Taylor expanded in EAccept around inf

              \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
            4. Step-by-step derivation
              1. Simplified76.3%

                \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
              2. Taylor expanded in KbT around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
              3. Step-by-step derivation
                1. *-lowering-*.f6450.8

                  \[\leadsto \color{blue}{0.5 \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
              4. Simplified50.8%

                \[\leadsto \color{blue}{0.5 \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]

              if -4.99999999999999968e-50 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.99999999999999992e-291

              1. Initial program 100.0%

                \[\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}}} \]
              2. Add Preprocessing
              3. Taylor expanded in NdChar around inf

                \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
              4. Step-by-step derivation
                1. /-lowering-/.f64N/A

                  \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                2. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                3. exp-lowering-exp.f64N/A

                  \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                4. /-lowering-/.f64N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                5. associate--l+N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                6. sub-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                7. associate-+r+N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                8. mul-1-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                9. associate-+r+N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                10. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                11. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                12. mul-1-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                13. sub-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                14. --lowering--.f6465.4

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
              5. Simplified65.4%

                \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
              6. Taylor expanded in mu around inf

                \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]
              7. Step-by-step derivation
                1. /-lowering-/.f6450.0

                  \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]
              8. Simplified50.0%

                \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{mu}{KbT}}}} \]

              if -1.99999999999999992e-291 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

              1. Initial program 100.0%

                \[\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}}} \]
              2. Add Preprocessing
              3. Taylor expanded in NdChar around inf

                \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
              4. Step-by-step derivation
                1. /-lowering-/.f64N/A

                  \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                2. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                3. exp-lowering-exp.f64N/A

                  \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                4. /-lowering-/.f64N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                5. associate--l+N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                6. sub-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                7. associate-+r+N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                8. mul-1-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                9. associate-+r+N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                10. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                11. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                12. mul-1-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                13. sub-negN/A

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                14. --lowering--.f6493.7

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
              5. Simplified93.7%

                \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
              6. Taylor expanded in KbT around -inf

                \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
              7. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                2. unsub-negN/A

                  \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                3. --lowering--.f64N/A

                  \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                4. /-lowering-/.f64N/A

                  \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
              8. Simplified85.3%

                \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
              9. Taylor expanded in Ec around inf

                \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
              10. Step-by-step derivation
                1. *-lowering-*.f64N/A

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                2. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \color{blue}{\left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                3. mul-1-negN/A

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
                4. neg-lowering-neg.f64N/A

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
                5. /-lowering-/.f64N/A

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\color{blue}{\frac{EDonor + \left(Vef + mu\right)}{Ec}}\right)\right)\right)\right)}{KbT}} \]
                6. +-lowering-+.f64N/A

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\frac{\color{blue}{EDonor + \left(Vef + mu\right)}}{Ec}\right)\right)\right)\right)}{KbT}} \]
                7. +-lowering-+.f6487.5

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(-\frac{EDonor + \color{blue}{\left(Vef + mu\right)}}{Ec}\right)\right)\right)}{KbT}} \]
              11. Simplified87.5%

                \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + \left(-\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)}{KbT}} \]
            5. Recombined 3 regimes into one program.
            6. Final simplification57.0%

              \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -5 \cdot 10^{-50}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -2 \cdot 10^{-291}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ \end{array} \]
            7. Add Preprocessing

            Alternative 6: 45.5% accurate, 0.3× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ t_1 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\ \mathbf{if}\;t\_0 \leq -1 \cdot 10^{+190}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_0 \leq -2 \cdot 10^{-233}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{elif}\;t\_0 \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_1 \cdot t\_1}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
            (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
             :precision binary64
             (let* ((t_0
                     (+
                      (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                      (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0))))
                    (t_1 (+ EDonor (+ Vef (- mu Ec)))))
               (if (<= t_0 -1e+190)
                 (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                 (if (<= t_0 -2e-233)
                   (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
                   (if (<= t_0 1e-240)
                     (/
                      NdChar
                      (-
                       2.0
                       (/
                        (fma
                         -0.5
                         (/ (* t_1 t_1) KbT)
                         (* Ec (- 1.0 (/ (+ EDonor (+ Vef mu)) Ec))))
                        KbT)))
                     (* 0.5 (+ NdChar NaChar)))))))
            double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
            	double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
            	double t_1 = EDonor + (Vef + (mu - Ec));
            	double tmp;
            	if (t_0 <= -1e+190) {
            		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
            	} else if (t_0 <= -2e-233) {
            		tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
            	} else if (t_0 <= 1e-240) {
            		tmp = NdChar / (2.0 - (fma(-0.5, ((t_1 * t_1) / KbT), (Ec * (1.0 - ((EDonor + (Vef + mu)) / Ec)))) / KbT));
            	} else {
            		tmp = 0.5 * (NdChar + NaChar);
            	}
            	return tmp;
            }
            
            function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
            	t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
            	t_1 = Float64(EDonor + Float64(Vef + Float64(mu - Ec)))
            	tmp = 0.0
            	if (t_0 <= -1e+190)
            		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
            	elseif (t_0 <= -2e-233)
            		tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0));
            	elseif (t_0 <= 1e-240)
            		tmp = Float64(NdChar / Float64(2.0 - Float64(fma(-0.5, Float64(Float64(t_1 * t_1) / KbT), Float64(Ec * Float64(1.0 - Float64(Float64(EDonor + Float64(Vef + mu)) / Ec)))) / KbT)));
            	else
            		tmp = Float64(0.5 * Float64(NdChar + NaChar));
            	end
            	return tmp
            end
            
            code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -1e+190], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, -2e-233], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e-240], N[(NdChar / N[(2.0 - N[(N[(-0.5 * N[(N[(t$95$1 * t$95$1), $MachinePrecision] / KbT), $MachinePrecision] + N[(Ec * N[(1.0 - N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
            t_1 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\
            \mathbf{if}\;t\_0 \leq -1 \cdot 10^{+190}:\\
            \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
            
            \mathbf{elif}\;t\_0 \leq -2 \cdot 10^{-233}:\\
            \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
            
            \mathbf{elif}\;t\_0 \leq 10^{-240}:\\
            \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_1 \cdot t\_1}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\
            
            \mathbf{else}:\\
            \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 4 regimes
            2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.0000000000000001e190

              1. Initial program 99.9%

                \[\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}}} \]
              2. Add Preprocessing
              3. Taylor expanded in KbT around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
              4. Step-by-step derivation
                1. distribute-lft-outN/A

                  \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                2. *-lowering-*.f64N/A

                  \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                3. +-lowering-+.f6450.1

                  \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
              5. Simplified50.1%

                \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
              6. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                2. flip-+N/A

                  \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                3. associate-*l/N/A

                  \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                4. /-lowering-/.f64N/A

                  \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                5. *-lowering-*.f64N/A

                  \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                6. difference-of-squaresN/A

                  \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                7. *-lowering-*.f64N/A

                  \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                8. +-commutativeN/A

                  \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                9. +-lowering-+.f64N/A

                  \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                10. --lowering--.f64N/A

                  \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                11. --lowering--.f647.6

                  \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
              7. Applied egg-rr7.6%

                \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
              8. Step-by-step derivation
                1. associate-/l*N/A

                  \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                2. +-commutativeN/A

                  \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                3. *-commutativeN/A

                  \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                4. associate-*l*N/A

                  \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                5. *-lowering-*.f64N/A

                  \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                6. --lowering--.f64N/A

                  \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                7. *-lowering-*.f64N/A

                  \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                8. +-commutativeN/A

                  \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                9. +-lowering-+.f64N/A

                  \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                10. /-lowering-/.f64N/A

                  \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                11. --lowering--.f6450.1

                  \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
              9. Applied egg-rr50.1%

                \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

              if -1.0000000000000001e190 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.99999999999999992e-233

              1. Initial program 99.9%

                \[\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}}} \]
              2. Add Preprocessing
              3. Taylor expanded in EAccept around inf

                \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
              4. Step-by-step derivation
                1. Simplified73.8%

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                2. Taylor expanded in NdChar around 0

                  \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
                3. Step-by-step derivation
                  1. /-lowering-/.f64N/A

                    \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
                  2. +-lowering-+.f64N/A

                    \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{EAccept}{KbT}}}} \]
                  3. exp-lowering-exp.f64N/A

                    \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{EAccept}{KbT}}}} \]
                  4. /-lowering-/.f6437.2

                    \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{EAccept}{KbT}}}} \]
                4. Simplified37.2%

                  \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]

                if -1.99999999999999992e-233 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                1. Initial program 100.0%

                  \[\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}}} \]
                2. Add Preprocessing
                3. Taylor expanded in NdChar around inf

                  \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                4. Step-by-step derivation
                  1. /-lowering-/.f64N/A

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  2. +-lowering-+.f64N/A

                    \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  3. exp-lowering-exp.f64N/A

                    \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. /-lowering-/.f64N/A

                    \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  5. associate--l+N/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                  6. sub-negN/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                  7. associate-+r+N/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                  8. mul-1-negN/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                  9. associate-+r+N/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                  10. +-lowering-+.f64N/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                  11. +-lowering-+.f64N/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                  12. mul-1-negN/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                  13. sub-negN/A

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  14. --lowering--.f6493.9

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                5. Simplified93.9%

                  \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                6. Taylor expanded in KbT around -inf

                  \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                7. Step-by-step derivation
                  1. mul-1-negN/A

                    \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                  2. unsub-negN/A

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  3. --lowering--.f64N/A

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  4. /-lowering-/.f64N/A

                    \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                8. Simplified83.6%

                  \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                9. Taylor expanded in Ec around inf

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                10. Step-by-step derivation
                  1. *-lowering-*.f64N/A

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                  2. +-lowering-+.f64N/A

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \color{blue}{\left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                  3. mul-1-negN/A

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
                  4. neg-lowering-neg.f64N/A

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
                  5. /-lowering-/.f64N/A

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\color{blue}{\frac{EDonor + \left(Vef + mu\right)}{Ec}}\right)\right)\right)\right)}{KbT}} \]
                  6. +-lowering-+.f64N/A

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\frac{\color{blue}{EDonor + \left(Vef + mu\right)}}{Ec}\right)\right)\right)\right)}{KbT}} \]
                  7. +-lowering-+.f6485.8

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(-\frac{EDonor + \color{blue}{\left(Vef + mu\right)}}{Ec}\right)\right)\right)}{KbT}} \]
                11. Simplified85.8%

                  \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + \left(-\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)}{KbT}} \]

                if 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                1. Initial program 100.0%

                  \[\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}}} \]
                2. Add Preprocessing
                3. Taylor expanded in KbT around inf

                  \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                4. Step-by-step derivation
                  1. distribute-lft-outN/A

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                  2. *-lowering-*.f64N/A

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                  3. +-lowering-+.f6437.6

                    \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                5. Simplified37.6%

                  \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
              5. Recombined 4 regimes into one program.
              6. Final simplification47.4%

                \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{+190}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -2 \cdot 10^{-233}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
              7. Add Preprocessing

              Alternative 7: 79.0% accurate, 0.3× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ t_1 := t\_0 + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ t_2 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + t\_0\\ \mathbf{if}\;t\_2 \leq -5 \cdot 10^{-195}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;t\_2 \leq 5 \cdot 10^{-189}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{\left(Vef + EDonor\right) + \left(mu - Ec\right)}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
              (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
               :precision binary64
               (let* ((t_0 (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))
                      (t_1 (+ t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))
                      (t_2
                       (+
                        (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                        t_0)))
                 (if (<= t_2 -5e-195)
                   t_1
                   (if (<= t_2 5e-189)
                     (/ NdChar (+ (exp (/ (+ (+ Vef EDonor) (- mu Ec)) KbT)) 1.0))
                     t_1))))
              double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
              	double t_0 = NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0);
              	double t_1 = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0));
              	double t_2 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_0;
              	double tmp;
              	if (t_2 <= -5e-195) {
              		tmp = t_1;
              	} else if (t_2 <= 5e-189) {
              		tmp = NdChar / (exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0);
              	} else {
              		tmp = t_1;
              	}
              	return tmp;
              }
              
              real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                  real(8), intent (in) :: ndchar
                  real(8), intent (in) :: ec
                  real(8), intent (in) :: vef
                  real(8), intent (in) :: edonor
                  real(8), intent (in) :: mu
                  real(8), intent (in) :: kbt
                  real(8), intent (in) :: nachar
                  real(8), intent (in) :: ev
                  real(8), intent (in) :: eaccept
                  real(8) :: t_0
                  real(8) :: t_1
                  real(8) :: t_2
                  real(8) :: tmp
                  t_0 = nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0)
                  t_1 = t_0 + (ndchar / (exp((edonor / kbt)) + 1.0d0))
                  t_2 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + t_0
                  if (t_2 <= (-5d-195)) then
                      tmp = t_1
                  else if (t_2 <= 5d-189) then
                      tmp = ndchar / (exp((((vef + edonor) + (mu - ec)) / kbt)) + 1.0d0)
                  else
                      tmp = t_1
                  end if
                  code = tmp
              end function
              
              public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
              	double t_0 = NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0);
              	double t_1 = t_0 + (NdChar / (Math.exp((EDonor / KbT)) + 1.0));
              	double t_2 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_0;
              	double tmp;
              	if (t_2 <= -5e-195) {
              		tmp = t_1;
              	} else if (t_2 <= 5e-189) {
              		tmp = NdChar / (Math.exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0);
              	} else {
              		tmp = t_1;
              	}
              	return tmp;
              }
              
              def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
              	t_0 = NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)
              	t_1 = t_0 + (NdChar / (math.exp((EDonor / KbT)) + 1.0))
              	t_2 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_0
              	tmp = 0
              	if t_2 <= -5e-195:
              		tmp = t_1
              	elif t_2 <= 5e-189:
              		tmp = NdChar / (math.exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0)
              	else:
              		tmp = t_1
              	return tmp
              
              function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
              	t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
              	t_1 = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)))
              	t_2 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + t_0)
              	tmp = 0.0
              	if (t_2 <= -5e-195)
              		tmp = t_1;
              	elseif (t_2 <= 5e-189)
              		tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(Vef + EDonor) + Float64(mu - Ec)) / KbT)) + 1.0));
              	else
              		tmp = t_1;
              	end
              	return tmp
              end
              
              function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
              	t_0 = NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0);
              	t_1 = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0));
              	t_2 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_0;
              	tmp = 0.0;
              	if (t_2 <= -5e-195)
              		tmp = t_1;
              	elseif (t_2 <= 5e-189)
              		tmp = NdChar / (exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0);
              	else
              		tmp = t_1;
              	end
              	tmp_2 = tmp;
              end
              
              code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[t$95$2, -5e-195], t$95$1, If[LessEqual[t$95$2, 5e-189], N[(NdChar / N[(N[Exp[N[(N[(N[(Vef + EDonor), $MachinePrecision] + N[(mu - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
              t_1 := t\_0 + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
              t_2 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + t\_0\\
              \mathbf{if}\;t\_2 \leq -5 \cdot 10^{-195}:\\
              \;\;\;\;t\_1\\
              
              \mathbf{elif}\;t\_2 \leq 5 \cdot 10^{-189}:\\
              \;\;\;\;\frac{NdChar}{e^{\frac{\left(Vef + EDonor\right) + \left(mu - Ec\right)}{KbT}} + 1}\\
              
              \mathbf{else}:\\
              \;\;\;\;t\_1\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -5.00000000000000009e-195 or 4.9999999999999997e-189 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                1. Initial program 100.0%

                  \[\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}}} \]
                2. Add Preprocessing
                3. Taylor expanded in EDonor around inf

                  \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor}}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(\mathsf{neg}\left(mu\right)\right)}{KbT}}} \]
                4. Step-by-step derivation
                  1. Simplified81.0%

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor}}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}} \]

                  if -5.00000000000000009e-195 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.9999999999999997e-189

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6488.3

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified88.3%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                5. Recombined 2 regimes into one program.
                6. Final simplification82.6%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -5 \cdot 10^{-195}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 5 \cdot 10^{-189}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{\left(Vef + EDonor\right) + \left(mu - Ec\right)}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \end{array} \]
                7. Add Preprocessing

                Alternative 8: 45.1% accurate, 0.4× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_1 \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_0 \cdot t\_0}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (+ EDonor (+ Vef (- mu Ec))))
                        (t_1
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_1 -1e-201)
                     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                     (if (<= t_1 1e-240)
                       (/
                        NdChar
                        (-
                         2.0
                         (/
                          (fma
                           -0.5
                           (/ (* t_0 t_0) KbT)
                           (* Ec (- 1.0 (/ (+ EDonor (+ Vef mu)) Ec))))
                          KbT)))
                       (* 0.5 (+ NdChar NaChar))))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = EDonor + (Vef + (mu - Ec));
                	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_1 <= 1e-240) {
                		tmp = NdChar / (2.0 - (fma(-0.5, ((t_0 * t_0) / KbT), (Ec * (1.0 - ((EDonor + (Vef + mu)) / Ec)))) / KbT));
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(EDonor + Float64(Vef + Float64(mu - Ec)))
                	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_1 <= -1e-201)
                		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
                	elseif (t_1 <= 1e-240)
                		tmp = Float64(NdChar / Float64(2.0 - Float64(fma(-0.5, Float64(Float64(t_0 * t_0) / KbT), Float64(Ec * Float64(1.0 - Float64(Float64(EDonor + Float64(Vef + mu)) / Ec)))) / KbT)));
                	else
                		tmp = Float64(0.5 * Float64(NdChar + NaChar));
                	end
                	return tmp
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1e-201], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 1e-240], N[(NdChar / N[(2.0 - N[(N[(-0.5 * N[(N[(t$95$0 * t$95$0), $MachinePrecision] / KbT), $MachinePrecision] + N[(Ec * N[(1.0 - N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := EDonor + \left(Vef + \left(mu - Ec\right)\right)\\
                t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-201}:\\
                \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
                
                \mathbf{elif}\;t\_1 \leq 10^{-240}:\\
                \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{t\_0 \cdot t\_0}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -9.99999999999999946e-202

                  1. Initial program 99.9%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6436.8

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified36.8%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f6421.9

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr21.9%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Step-by-step derivation
                    1. associate-/l*N/A

                      \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                    2. +-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    3. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    4. associate-*l*N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    6. --lowering--.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    8. +-commutativeN/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    10. /-lowering-/.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                    11. --lowering--.f6436.8

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
                  9. Applied egg-rr36.8%

                    \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

                  if -9.99999999999999946e-202 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6490.5

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified90.5%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                  6. Taylor expanded in KbT around -inf

                    \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  7. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                    2. unsub-negN/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    3. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  8. Simplified77.3%

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                  9. Taylor expanded in Ec around inf

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                  10. Step-by-step derivation
                    1. *-lowering-*.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \color{blue}{\left(1 + -1 \cdot \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)}\right)}{KbT}} \]
                    3. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
                    4. neg-lowering-neg.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)\right)}{KbT}} \]
                    5. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\color{blue}{\frac{EDonor + \left(Vef + mu\right)}{Ec}}\right)\right)\right)\right)}{KbT}} \]
                    6. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(\mathsf{neg}\left(\frac{\color{blue}{EDonor + \left(Vef + mu\right)}}{Ec}\right)\right)\right)\right)}{KbT}} \]
                    7. +-lowering-+.f6479.2

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 + \left(-\frac{EDonor + \color{blue}{\left(Vef + mu\right)}}{Ec}\right)\right)\right)}{KbT}} \]
                  11. Simplified79.2%

                    \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, \color{blue}{Ec \cdot \left(1 + \left(-\frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}\right)}{KbT}} \]

                  if 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.6

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.6%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                3. Recombined 3 regimes into one program.
                4. Final simplification45.3%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, Ec \cdot \left(1 - \frac{EDonor + \left(Vef + mu\right)}{Ec}\right)\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 9: 44.6% accurate, 0.4× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := EDonor + \left(Vef - Ec\right)\\ t_1 := \frac{NdChar}{e^{\frac{mu + t\_0}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_1 \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 + \frac{\left(Vef + EDonor\right) - \mathsf{fma}\left(-0.5, \frac{t\_0 \cdot t\_0}{KbT}, Ec\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (+ EDonor (- Vef Ec)))
                        (t_1
                         (+
                          (/ NdChar (+ (exp (/ (+ mu t_0) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_1 -1e-201)
                     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                     (if (<= t_1 1e-240)
                       (/
                        NdChar
                        (+ 2.0 (/ (- (+ Vef EDonor) (fma -0.5 (/ (* t_0 t_0) KbT) Ec)) KbT)))
                       (* 0.5 (+ NdChar NaChar))))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = EDonor + (Vef - Ec);
                	double t_1 = (NdChar / (exp(((mu + t_0) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_1 <= 1e-240) {
                		tmp = NdChar / (2.0 + (((Vef + EDonor) - fma(-0.5, ((t_0 * t_0) / KbT), Ec)) / KbT));
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(EDonor + Float64(Vef - Ec))
                	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + t_0) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_1 <= -1e-201)
                		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
                	elseif (t_1 <= 1e-240)
                		tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(Vef + EDonor) - fma(-0.5, Float64(Float64(t_0 * t_0) / KbT), Ec)) / KbT)));
                	else
                		tmp = Float64(0.5 * Float64(NdChar + NaChar));
                	end
                	return tmp
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + t$95$0), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1e-201], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 1e-240], N[(NdChar / N[(2.0 + N[(N[(N[(Vef + EDonor), $MachinePrecision] - N[(-0.5 * N[(N[(t$95$0 * t$95$0), $MachinePrecision] / KbT), $MachinePrecision] + Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := EDonor + \left(Vef - Ec\right)\\
                t_1 := \frac{NdChar}{e^{\frac{mu + t\_0}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-201}:\\
                \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
                
                \mathbf{elif}\;t\_1 \leq 10^{-240}:\\
                \;\;\;\;\frac{NdChar}{2 + \frac{\left(Vef + EDonor\right) - \mathsf{fma}\left(-0.5, \frac{t\_0 \cdot t\_0}{KbT}, Ec\right)}{KbT}}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -9.99999999999999946e-202

                  1. Initial program 99.9%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6436.8

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified36.8%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f6421.9

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr21.9%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Step-by-step derivation
                    1. associate-/l*N/A

                      \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                    2. +-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    3. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    4. associate-*l*N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    6. --lowering--.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    8. +-commutativeN/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    10. /-lowering-/.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                    11. --lowering--.f6436.8

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
                  9. Applied egg-rr36.8%

                    \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

                  if -9.99999999999999946e-202 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6490.5

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified90.5%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                  6. Taylor expanded in KbT around -inf

                    \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  7. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                    2. unsub-negN/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    3. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  8. Simplified77.3%

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                  9. Taylor expanded in mu around 0

                    \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{\left(Ec + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + Vef\right) - Ec\right)}^{2}}{KbT}\right) - \left(EDonor + Vef\right)}}{KbT}} \]
                  10. Step-by-step derivation
                    1. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{\left(Ec + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + Vef\right) - Ec\right)}^{2}}{KbT}\right) - \left(EDonor + Vef\right)}}{KbT}} \]
                    2. +-commutativeN/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{\left(\frac{-1}{2} \cdot \frac{{\left(\left(EDonor + Vef\right) - Ec\right)}^{2}}{KbT} + Ec\right)} - \left(EDonor + Vef\right)}{KbT}} \]
                    3. accelerator-lowering-fma.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{\mathsf{fma}\left(\frac{-1}{2}, \frac{{\left(\left(EDonor + Vef\right) - Ec\right)}^{2}}{KbT}, Ec\right)} - \left(EDonor + Vef\right)}{KbT}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \color{blue}{\frac{{\left(\left(EDonor + Vef\right) - Ec\right)}^{2}}{KbT}}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    5. unpow2N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\color{blue}{\left(\left(EDonor + Vef\right) - Ec\right) \cdot \left(\left(EDonor + Vef\right) - Ec\right)}}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    6. *-lowering-*.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\color{blue}{\left(\left(EDonor + Vef\right) - Ec\right) \cdot \left(\left(EDonor + Vef\right) - Ec\right)}}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    7. associate--l+N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\color{blue}{\left(EDonor + \left(Vef - Ec\right)\right)} \cdot \left(\left(EDonor + Vef\right) - Ec\right)}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    8. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\color{blue}{\left(EDonor + \left(Vef - Ec\right)\right)} \cdot \left(\left(EDonor + Vef\right) - Ec\right)}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    9. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \color{blue}{\left(Vef - Ec\right)}\right) \cdot \left(\left(EDonor + Vef\right) - Ec\right)}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    10. associate--l+N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef - Ec\right)\right) \cdot \color{blue}{\left(EDonor + \left(Vef - Ec\right)\right)}}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef - Ec\right)\right) \cdot \color{blue}{\left(EDonor + \left(Vef - Ec\right)\right)}}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    12. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(\frac{-1}{2}, \frac{\left(EDonor + \left(Vef - Ec\right)\right) \cdot \left(EDonor + \color{blue}{\left(Vef - Ec\right)}\right)}{KbT}, Ec\right) - \left(EDonor + Vef\right)}{KbT}} \]
                    13. +-lowering-+.f6477.3

                      \[\leadsto \frac{NdChar}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef - Ec\right)\right) \cdot \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}, Ec\right) - \color{blue}{\left(EDonor + Vef\right)}}{KbT}} \]
                  11. Simplified77.3%

                    \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef - Ec\right)\right) \cdot \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}, Ec\right) - \left(EDonor + Vef\right)}}{KbT}} \]

                  if 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.6

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.6%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                3. Recombined 3 regimes into one program.
                4. Final simplification44.9%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{2 + \frac{\left(Vef + EDonor\right) - \mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef - Ec\right)\right) \cdot \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}, Ec\right)}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 10: 35.9% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_0 \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{\frac{0.5 \cdot \left(Ec \cdot Ec\right)}{KbT \cdot KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_0 -1e-201)
                     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                     (if (<= t_0 1e-240)
                       (/ NdChar (/ (* 0.5 (* Ec Ec)) (* KbT KbT)))
                       (* 0.5 (+ NdChar NaChar))))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 1e-240) {
                		tmp = NdChar / ((0.5 * (Ec * Ec)) / (KbT * KbT));
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_0 <= (-1d-201)) then
                        tmp = (nachar - ndchar) * ((ndchar + nachar) * (0.5d0 / (nachar - ndchar)))
                    else if (t_0 <= 1d-240) then
                        tmp = ndchar / ((0.5d0 * (ec * ec)) / (kbt * kbt))
                    else
                        tmp = 0.5d0 * (ndchar + nachar)
                    end if
                    code = tmp
                end function
                
                public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 1e-240) {
                		tmp = NdChar / ((0.5 * (Ec * Ec)) / (KbT * KbT));
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_0 <= -1e-201:
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)))
                	elif t_0 <= 1e-240:
                		tmp = NdChar / ((0.5 * (Ec * Ec)) / (KbT * KbT))
                	else:
                		tmp = 0.5 * (NdChar + NaChar)
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_0 <= -1e-201)
                		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
                	elseif (t_0 <= 1e-240)
                		tmp = Float64(NdChar / Float64(Float64(0.5 * Float64(Ec * Ec)) / Float64(KbT * KbT)));
                	else
                		tmp = Float64(0.5 * Float64(NdChar + NaChar));
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_0 <= -1e-201)
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	elseif (t_0 <= 1e-240)
                		tmp = NdChar / ((0.5 * (Ec * Ec)) / (KbT * KbT));
                	else
                		tmp = 0.5 * (NdChar + NaChar);
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -1e-201], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e-240], N[(NdChar / N[(N[(0.5 * N[(Ec * Ec), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-201}:\\
                \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
                
                \mathbf{elif}\;t\_0 \leq 10^{-240}:\\
                \;\;\;\;\frac{NdChar}{\frac{0.5 \cdot \left(Ec \cdot Ec\right)}{KbT \cdot KbT}}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -9.99999999999999946e-202

                  1. Initial program 99.9%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6436.8

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified36.8%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f6421.9

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr21.9%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Step-by-step derivation
                    1. associate-/l*N/A

                      \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                    2. +-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    3. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    4. associate-*l*N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    6. --lowering--.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    8. +-commutativeN/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    10. /-lowering-/.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                    11. --lowering--.f6436.8

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
                  9. Applied egg-rr36.8%

                    \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

                  if -9.99999999999999946e-202 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6490.5

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified90.5%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                  6. Taylor expanded in KbT around -inf

                    \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  7. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                    2. unsub-negN/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    3. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  8. Simplified77.3%

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                  9. Taylor expanded in Ec around inf

                    \[\leadsto \frac{NdChar}{\color{blue}{\frac{1}{2} \cdot \frac{{Ec}^{2}}{{KbT}^{2}}}} \]
                  10. Step-by-step derivation
                    1. associate-*r/N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{\frac{\frac{1}{2} \cdot {Ec}^{2}}{{KbT}^{2}}}} \]
                    2. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{\frac{\frac{1}{2} \cdot {Ec}^{2}}{{KbT}^{2}}}} \]
                    3. *-lowering-*.f64N/A

                      \[\leadsto \frac{NdChar}{\frac{\color{blue}{\frac{1}{2} \cdot {Ec}^{2}}}{{KbT}^{2}}} \]
                    4. unpow2N/A

                      \[\leadsto \frac{NdChar}{\frac{\frac{1}{2} \cdot \color{blue}{\left(Ec \cdot Ec\right)}}{{KbT}^{2}}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{NdChar}{\frac{\frac{1}{2} \cdot \color{blue}{\left(Ec \cdot Ec\right)}}{{KbT}^{2}}} \]
                    6. unpow2N/A

                      \[\leadsto \frac{NdChar}{\frac{\frac{1}{2} \cdot \left(Ec \cdot Ec\right)}{\color{blue}{KbT \cdot KbT}}} \]
                    7. *-lowering-*.f6451.0

                      \[\leadsto \frac{NdChar}{\frac{0.5 \cdot \left(Ec \cdot Ec\right)}{\color{blue}{KbT \cdot KbT}}} \]
                  11. Simplified51.0%

                    \[\leadsto \frac{NdChar}{\color{blue}{\frac{0.5 \cdot \left(Ec \cdot Ec\right)}{KbT \cdot KbT}}} \]

                  if 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.6

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.6%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                3. Recombined 3 regimes into one program.
                4. Final simplification39.9%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{NdChar}{\frac{0.5 \cdot \left(Ec \cdot Ec\right)}{KbT \cdot KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 11: 38.0% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_0 \leq 4 \cdot 10^{-181}:\\ \;\;\;\;\frac{NdChar}{2 + \frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_0 -1e-201)
                     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                     (if (<= t_0 4e-181)
                       (/ NdChar (+ 2.0 (/ (- (+ EDonor (+ Vef mu)) Ec) KbT)))
                       (* 0.5 (+ NdChar NaChar))))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 4e-181) {
                		tmp = NdChar / (2.0 + (((EDonor + (Vef + mu)) - Ec) / KbT));
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_0 <= (-1d-201)) then
                        tmp = (nachar - ndchar) * ((ndchar + nachar) * (0.5d0 / (nachar - ndchar)))
                    else if (t_0 <= 4d-181) then
                        tmp = ndchar / (2.0d0 + (((edonor + (vef + mu)) - ec) / kbt))
                    else
                        tmp = 0.5d0 * (ndchar + nachar)
                    end if
                    code = tmp
                end function
                
                public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 4e-181) {
                		tmp = NdChar / (2.0 + (((EDonor + (Vef + mu)) - Ec) / KbT));
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_0 <= -1e-201:
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)))
                	elif t_0 <= 4e-181:
                		tmp = NdChar / (2.0 + (((EDonor + (Vef + mu)) - Ec) / KbT))
                	else:
                		tmp = 0.5 * (NdChar + NaChar)
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_0 <= -1e-201)
                		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
                	elseif (t_0 <= 4e-181)
                		tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(EDonor + Float64(Vef + mu)) - Ec) / KbT)));
                	else
                		tmp = Float64(0.5 * Float64(NdChar + NaChar));
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_0 <= -1e-201)
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	elseif (t_0 <= 4e-181)
                		tmp = NdChar / (2.0 + (((EDonor + (Vef + mu)) - Ec) / KbT));
                	else
                		tmp = 0.5 * (NdChar + NaChar);
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -1e-201], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 4e-181], N[(NdChar / N[(2.0 + N[(N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-201}:\\
                \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
                
                \mathbf{elif}\;t\_0 \leq 4 \cdot 10^{-181}:\\
                \;\;\;\;\frac{NdChar}{2 + \frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -9.99999999999999946e-202

                  1. Initial program 99.9%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6436.8

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified36.8%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f6421.9

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr21.9%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Step-by-step derivation
                    1. associate-/l*N/A

                      \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                    2. +-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    3. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    4. associate-*l*N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    6. --lowering--.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    8. +-commutativeN/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    10. /-lowering-/.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                    11. --lowering--.f6436.8

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
                  9. Applied egg-rr36.8%

                    \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

                  if -9.99999999999999946e-202 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.00000000000000019e-181

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6486.9

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified86.9%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                  6. Taylor expanded in KbT around -inf

                    \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  7. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                    2. unsub-negN/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    3. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  8. Simplified67.2%

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                  9. Taylor expanded in KbT around inf

                    \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{Ec - \left(EDonor + \left(Vef + mu\right)\right)}}{KbT}} \]
                  10. Step-by-step derivation
                    1. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{Ec - \left(EDonor + \left(Vef + mu\right)\right)}}{KbT}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \frac{Ec - \color{blue}{\left(EDonor + \left(Vef + mu\right)\right)}}{KbT}} \]
                    3. +-lowering-+.f6445.3

                      \[\leadsto \frac{NdChar}{2 - \frac{Ec - \left(EDonor + \color{blue}{\left(Vef + mu\right)}\right)}{KbT}} \]
                  11. Simplified45.3%

                    \[\leadsto \frac{NdChar}{2 - \frac{\color{blue}{Ec - \left(EDonor + \left(Vef + mu\right)\right)}}{KbT}} \]

                  if 4.00000000000000019e-181 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6439.3

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified39.3%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                3. Recombined 3 regimes into one program.
                4. Final simplification39.7%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 4 \cdot 10^{-181}:\\ \;\;\;\;\frac{NdChar}{2 + \frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 12: 35.4% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_0 \leq 10^{-240}:\\ \;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{Ec \cdot Ec}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_0 -1e-201)
                     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                     (if (<= t_0 1e-240)
                       (/ (* 2.0 (* NdChar (* KbT KbT))) (* Ec Ec))
                       (* 0.5 (+ NdChar NaChar))))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 1e-240) {
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (Ec * Ec);
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_0 <= (-1d-201)) then
                        tmp = (nachar - ndchar) * ((ndchar + nachar) * (0.5d0 / (nachar - ndchar)))
                    else if (t_0 <= 1d-240) then
                        tmp = (2.0d0 * (ndchar * (kbt * kbt))) / (ec * ec)
                    else
                        tmp = 0.5d0 * (ndchar + nachar)
                    end if
                    code = tmp
                end function
                
                public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-201) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 1e-240) {
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (Ec * Ec);
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_0 <= -1e-201:
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)))
                	elif t_0 <= 1e-240:
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (Ec * Ec)
                	else:
                		tmp = 0.5 * (NdChar + NaChar)
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_0 <= -1e-201)
                		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
                	elseif (t_0 <= 1e-240)
                		tmp = Float64(Float64(2.0 * Float64(NdChar * Float64(KbT * KbT))) / Float64(Ec * Ec));
                	else
                		tmp = Float64(0.5 * Float64(NdChar + NaChar));
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_0 <= -1e-201)
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	elseif (t_0 <= 1e-240)
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (Ec * Ec);
                	else
                		tmp = 0.5 * (NdChar + NaChar);
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -1e-201], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e-240], N[(N[(2.0 * N[(NdChar * N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(Ec * Ec), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-201}:\\
                \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
                
                \mathbf{elif}\;t\_0 \leq 10^{-240}:\\
                \;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{Ec \cdot Ec}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -9.99999999999999946e-202

                  1. Initial program 99.9%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6436.8

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified36.8%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f6421.9

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr21.9%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Step-by-step derivation
                    1. associate-/l*N/A

                      \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                    2. +-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    3. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    4. associate-*l*N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    6. --lowering--.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    8. +-commutativeN/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    10. /-lowering-/.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                    11. --lowering--.f6436.8

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
                  9. Applied egg-rr36.8%

                    \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

                  if -9.99999999999999946e-202 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6490.5

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified90.5%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                  6. Taylor expanded in KbT around -inf

                    \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  7. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                    2. unsub-negN/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    3. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  8. Simplified77.3%

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                  9. Taylor expanded in Ec around inf

                    \[\leadsto \color{blue}{2 \cdot \frac{{KbT}^{2} \cdot NdChar}{{Ec}^{2}}} \]
                  10. Step-by-step derivation
                    1. associate-*r/N/A

                      \[\leadsto \color{blue}{\frac{2 \cdot \left({KbT}^{2} \cdot NdChar\right)}{{Ec}^{2}}} \]
                    2. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{2 \cdot \left({KbT}^{2} \cdot NdChar\right)}{{Ec}^{2}}} \]
                    3. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{2 \cdot \left({KbT}^{2} \cdot NdChar\right)}}{{Ec}^{2}} \]
                    4. *-lowering-*.f64N/A

                      \[\leadsto \frac{2 \cdot \color{blue}{\left({KbT}^{2} \cdot NdChar\right)}}{{Ec}^{2}} \]
                    5. unpow2N/A

                      \[\leadsto \frac{2 \cdot \left(\color{blue}{\left(KbT \cdot KbT\right)} \cdot NdChar\right)}{{Ec}^{2}} \]
                    6. *-lowering-*.f64N/A

                      \[\leadsto \frac{2 \cdot \left(\color{blue}{\left(KbT \cdot KbT\right)} \cdot NdChar\right)}{{Ec}^{2}} \]
                    7. unpow2N/A

                      \[\leadsto \frac{2 \cdot \left(\left(KbT \cdot KbT\right) \cdot NdChar\right)}{\color{blue}{Ec \cdot Ec}} \]
                    8. *-lowering-*.f6448.8

                      \[\leadsto \frac{2 \cdot \left(\left(KbT \cdot KbT\right) \cdot NdChar\right)}{\color{blue}{Ec \cdot Ec}} \]
                  11. Simplified48.8%

                    \[\leadsto \color{blue}{\frac{2 \cdot \left(\left(KbT \cdot KbT\right) \cdot NdChar\right)}{Ec \cdot Ec}} \]

                  if 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.6

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.6%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                3. Recombined 3 regimes into one program.
                4. Final simplification39.5%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-201}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{Ec \cdot Ec}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 13: 35.6% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_1 \leq -2 \cdot 10^{-291}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 0:\\ \;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{EDonor \cdot EDonor}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (* 0.5 (+ NdChar NaChar)))
                        (t_1
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_1 -2e-291)
                     t_0
                     (if (<= t_1 0.0)
                       (/ (* 2.0 (* NdChar (* KbT KbT))) (* EDonor EDonor))
                       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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -2e-291) {
                		tmp = t_0;
                	} else if (t_1 <= 0.0) {
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (EDonor * EDonor);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: t_1
                    real(8) :: tmp
                    t_0 = 0.5d0 * (ndchar + nachar)
                    t_1 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_1 <= (-2d-291)) then
                        tmp = t_0
                    else if (t_1 <= 0.0d0) then
                        tmp = (2.0d0 * (ndchar * (kbt * kbt))) / (edonor * edonor)
                    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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -2e-291) {
                		tmp = t_0;
                	} else if (t_1 <= 0.0) {
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (EDonor * EDonor);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = 0.5 * (NdChar + NaChar)
                	t_1 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_1 <= -2e-291:
                		tmp = t_0
                	elif t_1 <= 0.0:
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (EDonor * EDonor)
                	else:
                		tmp = t_0
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(0.5 * Float64(NdChar + NaChar))
                	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_1 <= -2e-291)
                		tmp = t_0;
                	elseif (t_1 <= 0.0)
                		tmp = Float64(Float64(2.0 * Float64(NdChar * Float64(KbT * KbT))) / Float64(EDonor * EDonor));
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = 0.5 * (NdChar + NaChar);
                	t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_1 <= -2e-291)
                		tmp = t_0;
                	elseif (t_1 <= 0.0)
                		tmp = (2.0 * (NdChar * (KbT * KbT))) / (EDonor * EDonor);
                	else
                		tmp = t_0;
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2e-291], t$95$0, If[LessEqual[t$95$1, 0.0], N[(N[(2.0 * N[(NdChar * N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(EDonor * EDonor), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
                t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_1 \leq -2 \cdot 10^{-291}:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;t\_1 \leq 0:\\
                \;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{EDonor \cdot EDonor}\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.99999999999999992e-291 or 0.0 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6435.6

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified35.6%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]

                  if -1.99999999999999992e-291 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 0.0

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f64100.0

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified100.0%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                  6. Taylor expanded in KbT around -inf

                    \[\leadsto \frac{NdChar}{\color{blue}{2 + -1 \cdot \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  7. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{2 + \color{blue}{\left(\mathsf{neg}\left(\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}\right)\right)}} \]
                    2. unsub-negN/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    3. --lowering--.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{2 - \color{blue}{\frac{-1 \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right) + \frac{-1}{2} \cdot \frac{{\left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}^{2}}{KbT}}{KbT}}} \]
                  8. Simplified95.2%

                    \[\leadsto \frac{NdChar}{\color{blue}{2 - \frac{\mathsf{fma}\left(-0.5, \frac{\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right) \cdot \left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)}{KbT}, -\left(EDonor + \left(Vef + \left(mu - Ec\right)\right)\right)\right)}{KbT}}} \]
                  9. Taylor expanded in EDonor around inf

                    \[\leadsto \color{blue}{2 \cdot \frac{{KbT}^{2} \cdot NdChar}{{EDonor}^{2}}} \]
                  10. Step-by-step derivation
                    1. associate-*r/N/A

                      \[\leadsto \color{blue}{\frac{2 \cdot \left({KbT}^{2} \cdot NdChar\right)}{{EDonor}^{2}}} \]
                    2. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{2 \cdot \left({KbT}^{2} \cdot NdChar\right)}{{EDonor}^{2}}} \]
                    3. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{2 \cdot \left({KbT}^{2} \cdot NdChar\right)}}{{EDonor}^{2}} \]
                    4. *-lowering-*.f64N/A

                      \[\leadsto \frac{2 \cdot \color{blue}{\left({KbT}^{2} \cdot NdChar\right)}}{{EDonor}^{2}} \]
                    5. unpow2N/A

                      \[\leadsto \frac{2 \cdot \left(\color{blue}{\left(KbT \cdot KbT\right)} \cdot NdChar\right)}{{EDonor}^{2}} \]
                    6. *-lowering-*.f64N/A

                      \[\leadsto \frac{2 \cdot \left(\color{blue}{\left(KbT \cdot KbT\right)} \cdot NdChar\right)}{{EDonor}^{2}} \]
                    7. unpow2N/A

                      \[\leadsto \frac{2 \cdot \left(\left(KbT \cdot KbT\right) \cdot NdChar\right)}{\color{blue}{EDonor \cdot EDonor}} \]
                    8. *-lowering-*.f6448.2

                      \[\leadsto \frac{2 \cdot \left(\left(KbT \cdot KbT\right) \cdot NdChar\right)}{\color{blue}{EDonor \cdot EDonor}} \]
                  11. Simplified48.2%

                    \[\leadsto \color{blue}{\frac{2 \cdot \left(\left(KbT \cdot KbT\right) \cdot NdChar\right)}{EDonor \cdot EDonor}} \]
                3. Recombined 2 regimes into one program.
                4. Final simplification37.5%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -2 \cdot 10^{-291}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 0:\\ \;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{EDonor \cdot EDonor}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 14: 32.6% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-210}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;t\_0 \leq 5 \cdot 10^{-248}:\\ \;\;\;\;\frac{0.5 \cdot \left(NaChar \cdot NaChar\right)}{NaChar - NdChar}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_0 -1e-210)
                     (* (- NaChar NdChar) (* (+ NdChar NaChar) (/ 0.5 (- NaChar NdChar))))
                     (if (<= t_0 5e-248)
                       (/ (* 0.5 (* NaChar NaChar)) (- NaChar NdChar))
                       (* 0.5 (+ NdChar NaChar))))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-210) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 5e-248) {
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar);
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_0 <= (-1d-210)) then
                        tmp = (nachar - ndchar) * ((ndchar + nachar) * (0.5d0 / (nachar - ndchar)))
                    else if (t_0 <= 5d-248) then
                        tmp = (0.5d0 * (nachar * nachar)) / (nachar - ndchar)
                    else
                        tmp = 0.5d0 * (ndchar + nachar)
                    end if
                    code = tmp
                end function
                
                public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_0 <= -1e-210) {
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	} else if (t_0 <= 5e-248) {
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar);
                	} else {
                		tmp = 0.5 * (NdChar + NaChar);
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_0 <= -1e-210:
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)))
                	elif t_0 <= 5e-248:
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar)
                	else:
                		tmp = 0.5 * (NdChar + NaChar)
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_0 <= -1e-210)
                		tmp = Float64(Float64(NaChar - NdChar) * Float64(Float64(NdChar + NaChar) * Float64(0.5 / Float64(NaChar - NdChar))));
                	elseif (t_0 <= 5e-248)
                		tmp = Float64(Float64(0.5 * Float64(NaChar * NaChar)) / Float64(NaChar - NdChar));
                	else
                		tmp = Float64(0.5 * Float64(NdChar + NaChar));
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_0 <= -1e-210)
                		tmp = (NaChar - NdChar) * ((NdChar + NaChar) * (0.5 / (NaChar - NdChar)));
                	elseif (t_0 <= 5e-248)
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar);
                	else
                		tmp = 0.5 * (NdChar + NaChar);
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -1e-210], N[(N[(NaChar - NdChar), $MachinePrecision] * N[(N[(NdChar + NaChar), $MachinePrecision] * N[(0.5 / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 5e-248], N[(N[(0.5 * N[(NaChar * NaChar), $MachinePrecision]), $MachinePrecision] / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_0 \leq -1 \cdot 10^{-210}:\\
                \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\
                
                \mathbf{elif}\;t\_0 \leq 5 \cdot 10^{-248}:\\
                \;\;\;\;\frac{0.5 \cdot \left(NaChar \cdot NaChar\right)}{NaChar - NdChar}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1e-210

                  1. Initial program 99.9%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6436.0

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified36.0%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f6421.4

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr21.4%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Step-by-step derivation
                    1. associate-/l*N/A

                      \[\leadsto \color{blue}{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}} \]
                    2. +-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(NaChar + NdChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    3. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(\left(NaChar - NdChar\right) \cdot \left(NaChar + NdChar\right)\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar} \]
                    4. associate-*l*N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    6. --lowering--.f64N/A

                      \[\leadsto \color{blue}{\left(NaChar - NdChar\right)} \cdot \left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \color{blue}{\left(\left(NaChar + NdChar\right) \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right)} \]
                    8. +-commutativeN/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \frac{\frac{1}{2}}{NaChar - NdChar}\right) \]
                    10. /-lowering-/.f64N/A

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \color{blue}{\frac{\frac{1}{2}}{NaChar - NdChar}}\right) \]
                    11. --lowering--.f6436.0

                      \[\leadsto \left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{\color{blue}{NaChar - NdChar}}\right) \]
                  9. Applied egg-rr36.0%

                    \[\leadsto \color{blue}{\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)} \]

                  if -1e-210 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 5.0000000000000001e-248

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f643.1

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified3.1%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f647.1

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr7.1%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Taylor expanded in NdChar around 0

                    \[\leadsto \frac{\color{blue}{{NaChar}^{2}} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                  9. Step-by-step derivation
                    1. unpow2N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    2. *-lowering-*.f6431.0

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar\right)} \cdot 0.5}{NaChar - NdChar} \]
                  10. Simplified31.0%

                    \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar\right)} \cdot 0.5}{NaChar - NdChar} \]

                  if 5.0000000000000001e-248 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.4

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.4%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                3. Recombined 3 regimes into one program.
                4. Final simplification35.7%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-210}:\\ \;\;\;\;\left(NaChar - NdChar\right) \cdot \left(\left(NdChar + NaChar\right) \cdot \frac{0.5}{NaChar - NdChar}\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 5 \cdot 10^{-248}:\\ \;\;\;\;\frac{0.5 \cdot \left(NaChar \cdot NaChar\right)}{NaChar - NdChar}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 15: 32.6% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-208}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 10^{-240}:\\ \;\;\;\;\frac{0.5 \cdot \left(NaChar \cdot NaChar\right)}{NaChar - NdChar}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (* 0.5 (+ NdChar NaChar)))
                        (t_1
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_1 -1e-208)
                     t_0
                     (if (<= t_1 1e-240)
                       (/ (* 0.5 (* NaChar NaChar)) (- NaChar NdChar))
                       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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -1e-208) {
                		tmp = t_0;
                	} else if (t_1 <= 1e-240) {
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: t_1
                    real(8) :: tmp
                    t_0 = 0.5d0 * (ndchar + nachar)
                    t_1 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_1 <= (-1d-208)) then
                        tmp = t_0
                    else if (t_1 <= 1d-240) then
                        tmp = (0.5d0 * (nachar * nachar)) / (nachar - ndchar)
                    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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -1e-208) {
                		tmp = t_0;
                	} else if (t_1 <= 1e-240) {
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = 0.5 * (NdChar + NaChar)
                	t_1 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_1 <= -1e-208:
                		tmp = t_0
                	elif t_1 <= 1e-240:
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar)
                	else:
                		tmp = t_0
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(0.5 * Float64(NdChar + NaChar))
                	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_1 <= -1e-208)
                		tmp = t_0;
                	elseif (t_1 <= 1e-240)
                		tmp = Float64(Float64(0.5 * Float64(NaChar * NaChar)) / Float64(NaChar - NdChar));
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = 0.5 * (NdChar + NaChar);
                	t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_1 <= -1e-208)
                		tmp = t_0;
                	elseif (t_1 <= 1e-240)
                		tmp = (0.5 * (NaChar * NaChar)) / (NaChar - NdChar);
                	else
                		tmp = t_0;
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1e-208], t$95$0, If[LessEqual[t$95$1, 1e-240], N[(N[(0.5 * N[(NaChar * NaChar), $MachinePrecision]), $MachinePrecision] / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
                t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-208}:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;t\_1 \leq 10^{-240}:\\
                \;\;\;\;\frac{0.5 \cdot \left(NaChar \cdot NaChar\right)}{NaChar - NdChar}\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.0000000000000001e-208 or 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.1

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.1%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]

                  if -1.0000000000000001e-208 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f643.1

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified3.1%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f646.9

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr6.9%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Taylor expanded in NdChar around 0

                    \[\leadsto \frac{\color{blue}{{NaChar}^{2}} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                  9. Step-by-step derivation
                    1. unpow2N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    2. *-lowering-*.f6429.9

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar\right)} \cdot 0.5}{NaChar - NdChar} \]
                  10. Simplified29.9%

                    \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar\right)} \cdot 0.5}{NaChar - NdChar} \]
                3. Recombined 2 regimes into one program.
                4. Final simplification35.7%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-208}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{0.5 \cdot \left(NaChar \cdot NaChar\right)}{NaChar - NdChar}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 16: 32.8% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-201}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 10^{-240}:\\ \;\;\;\;\frac{-0.5 \cdot \left(NdChar \cdot NdChar\right)}{NaChar - NdChar}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (* 0.5 (+ NdChar NaChar)))
                        (t_1
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_1 -1e-201)
                     t_0
                     (if (<= t_1 1e-240)
                       (/ (* -0.5 (* NdChar NdChar)) (- NaChar NdChar))
                       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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -1e-201) {
                		tmp = t_0;
                	} else if (t_1 <= 1e-240) {
                		tmp = (-0.5 * (NdChar * NdChar)) / (NaChar - NdChar);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: t_1
                    real(8) :: tmp
                    t_0 = 0.5d0 * (ndchar + nachar)
                    t_1 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_1 <= (-1d-201)) then
                        tmp = t_0
                    else if (t_1 <= 1d-240) then
                        tmp = ((-0.5d0) * (ndchar * ndchar)) / (nachar - ndchar)
                    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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -1e-201) {
                		tmp = t_0;
                	} else if (t_1 <= 1e-240) {
                		tmp = (-0.5 * (NdChar * NdChar)) / (NaChar - NdChar);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = 0.5 * (NdChar + NaChar)
                	t_1 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_1 <= -1e-201:
                		tmp = t_0
                	elif t_1 <= 1e-240:
                		tmp = (-0.5 * (NdChar * NdChar)) / (NaChar - NdChar)
                	else:
                		tmp = t_0
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(0.5 * Float64(NdChar + NaChar))
                	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_1 <= -1e-201)
                		tmp = t_0;
                	elseif (t_1 <= 1e-240)
                		tmp = Float64(Float64(-0.5 * Float64(NdChar * NdChar)) / Float64(NaChar - NdChar));
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = 0.5 * (NdChar + NaChar);
                	t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_1 <= -1e-201)
                		tmp = t_0;
                	elseif (t_1 <= 1e-240)
                		tmp = (-0.5 * (NdChar * NdChar)) / (NaChar - NdChar);
                	else
                		tmp = t_0;
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1e-201], t$95$0, If[LessEqual[t$95$1, 1e-240], N[(N[(-0.5 * N[(NdChar * NdChar), $MachinePrecision]), $MachinePrecision] / N[(NaChar - NdChar), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
                t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-201}:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;t\_1 \leq 10^{-240}:\\
                \;\;\;\;\frac{-0.5 \cdot \left(NdChar \cdot NdChar\right)}{NaChar - NdChar}\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -9.99999999999999946e-202 or 9.9999999999999997e-241 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6437.3

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified37.3%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]

                  if -9.99999999999999946e-202 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999997e-241

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f643.1

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified3.1%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                  6. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \color{blue}{\left(NaChar + NdChar\right) \cdot \frac{1}{2}} \]
                    2. flip-+N/A

                      \[\leadsto \color{blue}{\frac{NaChar \cdot NaChar - NdChar \cdot NdChar}{NaChar - NdChar}} \cdot \frac{1}{2} \]
                    3. associate-*l/N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}{NaChar - NdChar}} \]
                    5. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(NaChar \cdot NaChar - NdChar \cdot NdChar\right) \cdot \frac{1}{2}}}{NaChar - NdChar} \]
                    6. difference-of-squaresN/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\left(\left(NaChar + NdChar\right) \cdot \left(NaChar - NdChar\right)\right)} \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    8. +-commutativeN/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    9. +-lowering-+.f64N/A

                      \[\leadsto \frac{\left(\color{blue}{\left(NdChar + NaChar\right)} \cdot \left(NaChar - NdChar\right)\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    10. --lowering--.f64N/A

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \color{blue}{\left(NaChar - NdChar\right)}\right) \cdot \frac{1}{2}}{NaChar - NdChar} \]
                    11. --lowering--.f646.8

                      \[\leadsto \frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{\color{blue}{NaChar - NdChar}} \]
                  7. Applied egg-rr6.8%

                    \[\leadsto \color{blue}{\frac{\left(\left(NdChar + NaChar\right) \cdot \left(NaChar - NdChar\right)\right) \cdot 0.5}{NaChar - NdChar}} \]
                  8. Taylor expanded in NdChar around inf

                    \[\leadsto \frac{\color{blue}{\frac{-1}{2} \cdot {NdChar}^{2}}}{NaChar - NdChar} \]
                  9. Step-by-step derivation
                    1. *-lowering-*.f64N/A

                      \[\leadsto \frac{\color{blue}{\frac{-1}{2} \cdot {NdChar}^{2}}}{NaChar - NdChar} \]
                    2. unpow2N/A

                      \[\leadsto \frac{\frac{-1}{2} \cdot \color{blue}{\left(NdChar \cdot NdChar\right)}}{NaChar - NdChar} \]
                    3. *-lowering-*.f6423.4

                      \[\leadsto \frac{-0.5 \cdot \color{blue}{\left(NdChar \cdot NdChar\right)}}{NaChar - NdChar} \]
                  10. Simplified23.4%

                    \[\leadsto \frac{\color{blue}{-0.5 \cdot \left(NdChar \cdot NdChar\right)}}{NaChar - NdChar} \]
                3. Recombined 2 regimes into one program.
                4. Final simplification34.6%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -1 \cdot 10^{-201}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 10^{-240}:\\ \;\;\;\;\frac{-0.5 \cdot \left(NdChar \cdot NdChar\right)}{NaChar - NdChar}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 17: 30.3% accurate, 0.5× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\ t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\ \mathbf{if}\;t\_1 \leq -2 \cdot 10^{-291}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 0:\\ \;\;\;\;0.25 \cdot \frac{mu \cdot NaChar}{KbT}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (* 0.5 (+ NdChar NaChar)))
                        (t_1
                         (+
                          (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
                          (/ NaChar (+ (exp (/ (- (+ (+ Vef Ev) EAccept) mu) KbT)) 1.0)))))
                   (if (<= t_1 -2e-291)
                     t_0
                     (if (<= t_1 0.0) (* 0.25 (/ (* mu NaChar) 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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -2e-291) {
                		tmp = t_0;
                	} else if (t_1 <= 0.0) {
                		tmp = 0.25 * ((mu * NaChar) / 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) :: t_1
                    real(8) :: tmp
                    t_0 = 0.5d0 * (ndchar + nachar)
                    t_1 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((((vef + ev) + eaccept) - mu) / kbt)) + 1.0d0))
                    if (t_1 <= (-2d-291)) then
                        tmp = t_0
                    else if (t_1 <= 0.0d0) then
                        tmp = 0.25d0 * ((mu * nachar) / 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 = 0.5 * (NdChar + NaChar);
                	double t_1 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	double tmp;
                	if (t_1 <= -2e-291) {
                		tmp = t_0;
                	} else if (t_1 <= 0.0) {
                		tmp = 0.25 * ((mu * NaChar) / KbT);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = 0.5 * (NdChar + NaChar)
                	t_1 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0))
                	tmp = 0
                	if t_1 <= -2e-291:
                		tmp = t_0
                	elif t_1 <= 0.0:
                		tmp = 0.25 * ((mu * NaChar) / KbT)
                	else:
                		tmp = t_0
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(0.5 * Float64(NdChar + NaChar))
                	t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Vef + Ev) + EAccept) - mu) / KbT)) + 1.0)))
                	tmp = 0.0
                	if (t_1 <= -2e-291)
                		tmp = t_0;
                	elseif (t_1 <= 0.0)
                		tmp = Float64(0.25 * Float64(Float64(mu * NaChar) / KbT));
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = 0.5 * (NdChar + NaChar);
                	t_1 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((((Vef + Ev) + EAccept) - mu) / KbT)) + 1.0));
                	tmp = 0.0;
                	if (t_1 <= -2e-291)
                		tmp = t_0;
                	elseif (t_1 <= 0.0)
                		tmp = 0.25 * ((mu * NaChar) / 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[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Vef + Ev), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2e-291], t$95$0, If[LessEqual[t$95$1, 0.0], N[(0.25 * N[(N[(mu * NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
                t_1 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1}\\
                \mathbf{if}\;t\_1 \leq -2 \cdot 10^{-291}:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;t\_1 \leq 0:\\
                \;\;\;\;0.25 \cdot \frac{mu \cdot NaChar}{KbT}\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1.99999999999999992e-291 or 0.0 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT)))))

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                  4. Step-by-step derivation
                    1. distribute-lft-outN/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                    3. +-lowering-+.f6435.6

                      \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                  5. Simplified35.6%

                    \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]

                  if -1.99999999999999992e-291 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 0.0

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around -inf

                    \[\leadsto \color{blue}{\frac{-1}{4} \cdot \frac{NaChar \cdot \left(\left(EAccept + \left(Ev + Vef\right)\right) - mu\right)}{KbT} + \left(\frac{-1}{4} \cdot \frac{NdChar \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}{KbT} + \left(\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar\right)\right)} \]
                  4. Simplified1.7%

                    \[\leadsto \color{blue}{\mathsf{fma}\left(-0.25, \mathsf{fma}\left(NaChar, \frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}, \frac{\left(\left(EDonor + Vef\right) + \left(mu - Ec\right)\right) \cdot NdChar}{KbT}\right), 0.5 \cdot \left(NaChar + NdChar\right)\right)} \]
                  5. Taylor expanded in mu around -inf

                    \[\leadsto \color{blue}{\frac{1}{4} \cdot \left(mu \cdot \left(-1 \cdot \frac{NdChar}{KbT} + \frac{NaChar}{KbT}\right)\right)} \]
                  6. Step-by-step derivation
                    1. associate-*r*N/A

                      \[\leadsto \color{blue}{\left(\frac{1}{4} \cdot mu\right) \cdot \left(-1 \cdot \frac{NdChar}{KbT} + \frac{NaChar}{KbT}\right)} \]
                    2. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(\frac{1}{4} \cdot mu\right) \cdot \left(-1 \cdot \frac{NdChar}{KbT} + \frac{NaChar}{KbT}\right)} \]
                    3. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\left(\frac{1}{4} \cdot mu\right)} \cdot \left(-1 \cdot \frac{NdChar}{KbT} + \frac{NaChar}{KbT}\right) \]
                    4. +-commutativeN/A

                      \[\leadsto \left(\frac{1}{4} \cdot mu\right) \cdot \color{blue}{\left(\frac{NaChar}{KbT} + -1 \cdot \frac{NdChar}{KbT}\right)} \]
                    5. mul-1-negN/A

                      \[\leadsto \left(\frac{1}{4} \cdot mu\right) \cdot \left(\frac{NaChar}{KbT} + \color{blue}{\left(\mathsf{neg}\left(\frac{NdChar}{KbT}\right)\right)}\right) \]
                    6. unsub-negN/A

                      \[\leadsto \left(\frac{1}{4} \cdot mu\right) \cdot \color{blue}{\left(\frac{NaChar}{KbT} - \frac{NdChar}{KbT}\right)} \]
                    7. --lowering--.f64N/A

                      \[\leadsto \left(\frac{1}{4} \cdot mu\right) \cdot \color{blue}{\left(\frac{NaChar}{KbT} - \frac{NdChar}{KbT}\right)} \]
                    8. /-lowering-/.f64N/A

                      \[\leadsto \left(\frac{1}{4} \cdot mu\right) \cdot \left(\color{blue}{\frac{NaChar}{KbT}} - \frac{NdChar}{KbT}\right) \]
                    9. /-lowering-/.f6410.2

                      \[\leadsto \left(0.25 \cdot mu\right) \cdot \left(\frac{NaChar}{KbT} - \color{blue}{\frac{NdChar}{KbT}}\right) \]
                  7. Simplified10.2%

                    \[\leadsto \color{blue}{\left(0.25 \cdot mu\right) \cdot \left(\frac{NaChar}{KbT} - \frac{NdChar}{KbT}\right)} \]
                  8. Taylor expanded in NaChar around inf

                    \[\leadsto \color{blue}{\frac{1}{4} \cdot \frac{NaChar \cdot mu}{KbT}} \]
                  9. Step-by-step derivation
                    1. *-lowering-*.f64N/A

                      \[\leadsto \color{blue}{\frac{1}{4} \cdot \frac{NaChar \cdot mu}{KbT}} \]
                    2. /-lowering-/.f64N/A

                      \[\leadsto \frac{1}{4} \cdot \color{blue}{\frac{NaChar \cdot mu}{KbT}} \]
                    3. *-commutativeN/A

                      \[\leadsto \frac{1}{4} \cdot \frac{\color{blue}{mu \cdot NaChar}}{KbT} \]
                    4. *-lowering-*.f6425.9

                      \[\leadsto 0.25 \cdot \frac{\color{blue}{mu \cdot NaChar}}{KbT} \]
                  10. Simplified25.9%

                    \[\leadsto \color{blue}{0.25 \cdot \frac{mu \cdot NaChar}{KbT}} \]
                3. Recombined 2 regimes into one program.
                4. Final simplification34.1%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq -2 \cdot 10^{-291}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \mathbf{elif}\;\frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(\left(Vef + Ev\right) + EAccept\right) - mu}{KbT}} + 1} \leq 0:\\ \;\;\;\;0.25 \cdot \frac{mu \cdot NaChar}{KbT}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                5. Add Preprocessing

                Alternative 18: 69.8% accurate, 1.9× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\ \mathbf{if}\;NaChar \leq -1.6 \cdot 10^{+14}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;NaChar \leq 3.5 \cdot 10^{+33}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{\left(Vef + EDonor\right) + \left(mu - Ec\right)}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (let* ((t_0 (/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))))
                   (if (<= NaChar -1.6e+14)
                     t_0
                     (if (<= NaChar 3.5e+33)
                       (/ NdChar (+ (exp (/ (+ (+ Vef EDonor) (- mu Ec)) KbT)) 1.0))
                       t_0))))
                double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
                	double tmp;
                	if (NaChar <= -1.6e+14) {
                		tmp = t_0;
                	} else if (NaChar <= 3.5e+33) {
                		tmp = NdChar / (exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                    real(8), intent (in) :: ndchar
                    real(8), intent (in) :: ec
                    real(8), intent (in) :: vef
                    real(8), intent (in) :: edonor
                    real(8), intent (in) :: mu
                    real(8), intent (in) :: kbt
                    real(8), intent (in) :: nachar
                    real(8), intent (in) :: ev
                    real(8), intent (in) :: eaccept
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = nachar / (exp(((eaccept + (ev + (vef - mu))) / kbt)) + 1.0d0)
                    if (nachar <= (-1.6d+14)) then
                        tmp = t_0
                    else if (nachar <= 3.5d+33) then
                        tmp = ndchar / (exp((((vef + edonor) + (mu - ec)) / kbt)) + 1.0d0)
                    else
                        tmp = t_0
                    end if
                    code = tmp
                end function
                
                public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                	double t_0 = NaChar / (Math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
                	double tmp;
                	if (NaChar <= -1.6e+14) {
                		tmp = t_0;
                	} else if (NaChar <= 3.5e+33) {
                		tmp = NdChar / (Math.exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0);
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	t_0 = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0)
                	tmp = 0
                	if NaChar <= -1.6e+14:
                		tmp = t_0
                	elif NaChar <= 3.5e+33:
                		tmp = NdChar / (math.exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0)
                	else:
                		tmp = t_0
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0))
                	tmp = 0.0
                	if (NaChar <= -1.6e+14)
                		tmp = t_0;
                	elseif (NaChar <= 3.5e+33)
                		tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(Vef + EDonor) + Float64(mu - Ec)) / KbT)) + 1.0));
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	t_0 = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
                	tmp = 0.0;
                	if (NaChar <= -1.6e+14)
                		tmp = t_0;
                	elseif (NaChar <= 3.5e+33)
                		tmp = NdChar / (exp((((Vef + EDonor) + (mu - Ec)) / KbT)) + 1.0);
                	else
                		tmp = t_0;
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.6e+14], t$95$0, If[LessEqual[NaChar, 3.5e+33], N[(NdChar / N[(N[Exp[N[(N[(N[(Vef + EDonor), $MachinePrecision] + N[(mu - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
                \mathbf{if}\;NaChar \leq -1.6 \cdot 10^{+14}:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;NaChar \leq 3.5 \cdot 10^{+33}:\\
                \;\;\;\;\frac{NdChar}{e^{\frac{\left(Vef + EDonor\right) + \left(mu - Ec\right)}{KbT}} + 1}\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if NaChar < -1.6e14 or 3.5000000000000001e33 < NaChar

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around 0

                    \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept + \left(\left(Ev + Vef\right) - mu\right)}}{KbT}}} \]
                    6. +-lowering-+.f64N/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept + \left(\left(Ev + Vef\right) - mu\right)}}{KbT}}} \]
                    7. sub-negN/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \color{blue}{\left(\left(Ev + Vef\right) + \left(\mathsf{neg}\left(mu\right)\right)\right)}}{KbT}}} \]
                    8. associate-+r+N/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \color{blue}{\left(Ev + \left(Vef + \left(\mathsf{neg}\left(mu\right)\right)\right)\right)}}{KbT}}} \]
                    9. mul-1-negN/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \left(Vef + \color{blue}{-1 \cdot mu}\right)\right)}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \color{blue}{\left(Ev + \left(Vef + -1 \cdot mu\right)\right)}}{KbT}}} \]
                    11. mul-1-negN/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \left(Vef + \color{blue}{\left(\mathsf{neg}\left(mu\right)\right)}\right)\right)}{KbT}}} \]
                    12. sub-negN/A

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \color{blue}{\left(Vef - mu\right)}\right)}{KbT}}} \]
                    13. --lowering--.f6473.8

                      \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \color{blue}{\left(Vef - mu\right)}\right)}{KbT}}} \]
                  5. Simplified73.8%

                    \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}}}} \]

                  if -1.6e14 < NaChar < 3.5000000000000001e33

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in NdChar around inf

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                  4. Step-by-step derivation
                    1. /-lowering-/.f64N/A

                      \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    2. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    3. exp-lowering-exp.f64N/A

                      \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    4. /-lowering-/.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                    5. associate--l+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                    6. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                    7. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                    9. associate-+r+N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    10. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                    11. +-lowering-+.f64N/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                    12. mul-1-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                    13. sub-negN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                    14. --lowering--.f6475.5

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                  5. Simplified75.5%

                    \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                3. Recombined 2 regimes into one program.
                4. Final simplification74.7%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;NaChar \leq -1.6 \cdot 10^{+14}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\ \mathbf{elif}\;NaChar \leq 3.5 \cdot 10^{+33}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{\left(Vef + EDonor\right) + \left(mu - Ec\right)}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\ \end{array} \]
                5. Add Preprocessing

                Alternative 19: 64.9% accurate, 1.9× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;KbT \leq -5.5 \cdot 10^{+153}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + NaChar \cdot 0.5\\ \mathbf{elif}\;KbT \leq 2.5 \cdot 10^{+217}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ \end{array} \end{array} \]
                (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                 :precision binary64
                 (if (<= KbT -5.5e+153)
                   (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (* NaChar 0.5))
                   (if (<= KbT 2.5e+217)
                     (/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))
                     (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* 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 (KbT <= -5.5e+153) {
                		tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar * 0.5);
                	} else if (KbT <= 2.5e+217) {
                		tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
                	} else {
                		tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (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 (kbt <= (-5.5d+153)) then
                        tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar * 0.5d0)
                    else if (kbt <= 2.5d+217) then
                        tmp = nachar / (exp(((eaccept + (ev + (vef - mu))) / kbt)) + 1.0d0)
                    else
                        tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (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 (KbT <= -5.5e+153) {
                		tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar * 0.5);
                	} else if (KbT <= 2.5e+217) {
                		tmp = NaChar / (Math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
                	} else {
                		tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
                	}
                	return tmp;
                }
                
                def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                	tmp = 0
                	if KbT <= -5.5e+153:
                		tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar * 0.5)
                	elif KbT <= 2.5e+217:
                		tmp = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0)
                	else:
                		tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5)
                	return tmp
                
                function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                	tmp = 0.0
                	if (KbT <= -5.5e+153)
                		tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar * 0.5));
                	elseif (KbT <= 2.5e+217)
                		tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0));
                	else
                		tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + 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 (KbT <= -5.5e+153)
                		tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar * 0.5);
                	elseif (KbT <= 2.5e+217)
                		tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
                	else
                		tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
                	end
                	tmp_2 = tmp;
                end
                
                code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -5.5e+153], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.5e+217], N[(NaChar / N[(N[Exp[N[(N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                \mathbf{if}\;KbT \leq -5.5 \cdot 10^{+153}:\\
                \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + NaChar \cdot 0.5\\
                
                \mathbf{elif}\;KbT \leq 2.5 \cdot 10^{+217}:\\
                \;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
                
                \mathbf{else}:\\
                \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if KbT < -5.5000000000000003e153

                  1. Initial program 100.0%

                    \[\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}}} \]
                  2. Add Preprocessing
                  3. Taylor expanded in KbT around inf

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \color{blue}{\frac{1}{2} \cdot NaChar} \]
                  4. Step-by-step derivation
                    1. *-commutativeN/A

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \color{blue}{NaChar \cdot \frac{1}{2}} \]
                    2. *-lowering-*.f6482.2

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \color{blue}{NaChar \cdot 0.5} \]
                  5. Simplified82.2%

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \color{blue}{NaChar \cdot 0.5} \]
                  6. Taylor expanded in EDonor around inf

                    \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor}}{KbT}}} + NaChar \cdot \frac{1}{2} \]
                  7. Step-by-step derivation
                    1. Simplified79.2%

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor}}{KbT}}} + NaChar \cdot 0.5 \]

                    if -5.5000000000000003e153 < KbT < 2.50000000000000021e217

                    1. Initial program 100.0%

                      \[\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}}} \]
                    2. Add Preprocessing
                    3. Taylor expanded in NdChar around 0

                      \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                    4. Step-by-step derivation
                      1. /-lowering-/.f64N/A

                        \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                      2. +-lowering-+.f64N/A

                        \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                      3. exp-lowering-exp.f64N/A

                        \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                      4. /-lowering-/.f64N/A

                        \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}} \]
                      5. associate--l+N/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept + \left(\left(Ev + Vef\right) - mu\right)}}{KbT}}} \]
                      6. +-lowering-+.f64N/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept + \left(\left(Ev + Vef\right) - mu\right)}}{KbT}}} \]
                      7. sub-negN/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \color{blue}{\left(\left(Ev + Vef\right) + \left(\mathsf{neg}\left(mu\right)\right)\right)}}{KbT}}} \]
                      8. associate-+r+N/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \color{blue}{\left(Ev + \left(Vef + \left(\mathsf{neg}\left(mu\right)\right)\right)\right)}}{KbT}}} \]
                      9. mul-1-negN/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \left(Vef + \color{blue}{-1 \cdot mu}\right)\right)}{KbT}}} \]
                      10. +-lowering-+.f64N/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \color{blue}{\left(Ev + \left(Vef + -1 \cdot mu\right)\right)}}{KbT}}} \]
                      11. mul-1-negN/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \left(Vef + \color{blue}{\left(\mathsf{neg}\left(mu\right)\right)}\right)\right)}{KbT}}} \]
                      12. sub-negN/A

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \color{blue}{\left(Vef - mu\right)}\right)}{KbT}}} \]
                      13. --lowering--.f6462.5

                        \[\leadsto \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \color{blue}{\left(Vef - mu\right)}\right)}{KbT}}} \]
                    5. Simplified62.5%

                      \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}}}} \]

                    if 2.50000000000000021e217 < KbT

                    1. Initial program 99.9%

                      \[\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}}} \]
                    2. Add Preprocessing
                    3. Taylor expanded in EAccept around inf

                      \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                    4. Step-by-step derivation
                      1. Simplified97.3%

                        \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                      2. Taylor expanded in KbT around inf

                        \[\leadsto \color{blue}{\frac{1}{2} \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
                      3. Step-by-step derivation
                        1. *-lowering-*.f6487.1

                          \[\leadsto \color{blue}{0.5 \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
                      4. Simplified87.1%

                        \[\leadsto \color{blue}{0.5 \cdot NdChar} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} \]
                    5. Recombined 3 regimes into one program.
                    6. Final simplification66.4%

                      \[\leadsto \begin{array}{l} \mathbf{if}\;KbT \leq -5.5 \cdot 10^{+153}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + NaChar \cdot 0.5\\ \mathbf{elif}\;KbT \leq 2.5 \cdot 10^{+217}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\ \end{array} \]
                    7. Add Preprocessing

                    Alternative 20: 40.5% accurate, 1.9× speedup?

                    \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\ \mathbf{if}\;KbT \leq -1.28 \cdot 10^{+154}:\\ \;\;\;\;\mathsf{fma}\left(-0.25, Ev \cdot \frac{NaChar}{KbT}, t\_0\right)\\ \mathbf{elif}\;KbT \leq -1750:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{elif}\;KbT \leq 2.55 \cdot 10^{+101}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                    (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                     :precision binary64
                     (let* ((t_0 (* 0.5 (+ NdChar NaChar))))
                       (if (<= KbT -1.28e+154)
                         (fma -0.25 (* Ev (/ NaChar KbT)) t_0)
                         (if (<= KbT -1750.0)
                           (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
                           (if (<= KbT 2.55e+101) (/ NdChar (+ (exp (/ Ec (- KbT))) 1.0)) t_0)))))
                    double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                    	double t_0 = 0.5 * (NdChar + NaChar);
                    	double tmp;
                    	if (KbT <= -1.28e+154) {
                    		tmp = fma(-0.25, (Ev * (NaChar / KbT)), t_0);
                    	} else if (KbT <= -1750.0) {
                    		tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
                    	} else if (KbT <= 2.55e+101) {
                    		tmp = NdChar / (exp((Ec / -KbT)) + 1.0);
                    	} else {
                    		tmp = t_0;
                    	}
                    	return tmp;
                    }
                    
                    function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                    	t_0 = Float64(0.5 * Float64(NdChar + NaChar))
                    	tmp = 0.0
                    	if (KbT <= -1.28e+154)
                    		tmp = fma(-0.25, Float64(Ev * Float64(NaChar / KbT)), t_0);
                    	elseif (KbT <= -1750.0)
                    		tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0));
                    	elseif (KbT <= 2.55e+101)
                    		tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0));
                    	else
                    		tmp = t_0;
                    	end
                    	return tmp
                    end
                    
                    code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.28e+154], N[(-0.25 * N[(Ev * N[(NaChar / KbT), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[KbT, -1750.0], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.55e+101], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
                    
                    \begin{array}{l}
                    
                    \\
                    \begin{array}{l}
                    t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
                    \mathbf{if}\;KbT \leq -1.28 \cdot 10^{+154}:\\
                    \;\;\;\;\mathsf{fma}\left(-0.25, Ev \cdot \frac{NaChar}{KbT}, t\_0\right)\\
                    
                    \mathbf{elif}\;KbT \leq -1750:\\
                    \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
                    
                    \mathbf{elif}\;KbT \leq 2.55 \cdot 10^{+101}:\\
                    \;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;t\_0\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 4 regimes
                    2. if KbT < -1.2800000000000001e154

                      1. Initial program 100.0%

                        \[\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}}} \]
                      2. Add Preprocessing
                      3. Taylor expanded in KbT around -inf

                        \[\leadsto \color{blue}{\frac{-1}{4} \cdot \frac{NaChar \cdot \left(\left(EAccept + \left(Ev + Vef\right)\right) - mu\right)}{KbT} + \left(\frac{-1}{4} \cdot \frac{NdChar \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}{KbT} + \left(\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar\right)\right)} \]
                      4. Simplified58.6%

                        \[\leadsto \color{blue}{\mathsf{fma}\left(-0.25, \mathsf{fma}\left(NaChar, \frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}, \frac{\left(\left(EDonor + Vef\right) + \left(mu - Ec\right)\right) \cdot NdChar}{KbT}\right), 0.5 \cdot \left(NaChar + NdChar\right)\right)} \]
                      5. Taylor expanded in Ev around inf

                        \[\leadsto \mathsf{fma}\left(\frac{-1}{4}, \color{blue}{\frac{Ev \cdot NaChar}{KbT}}, \frac{1}{2} \cdot \left(NaChar + NdChar\right)\right) \]
                      6. Step-by-step derivation
                        1. associate-/l*N/A

                          \[\leadsto \mathsf{fma}\left(\frac{-1}{4}, \color{blue}{Ev \cdot \frac{NaChar}{KbT}}, \frac{1}{2} \cdot \left(NaChar + NdChar\right)\right) \]
                        2. *-lowering-*.f64N/A

                          \[\leadsto \mathsf{fma}\left(\frac{-1}{4}, \color{blue}{Ev \cdot \frac{NaChar}{KbT}}, \frac{1}{2} \cdot \left(NaChar + NdChar\right)\right) \]
                        3. /-lowering-/.f6470.2

                          \[\leadsto \mathsf{fma}\left(-0.25, Ev \cdot \color{blue}{\frac{NaChar}{KbT}}, 0.5 \cdot \left(NaChar + NdChar\right)\right) \]
                      7. Simplified70.2%

                        \[\leadsto \mathsf{fma}\left(-0.25, \color{blue}{Ev \cdot \frac{NaChar}{KbT}}, 0.5 \cdot \left(NaChar + NdChar\right)\right) \]

                      if -1.2800000000000001e154 < KbT < -1750

                      1. Initial program 100.0%

                        \[\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}}} \]
                      2. Add Preprocessing
                      3. Taylor expanded in EAccept around inf

                        \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                      4. Step-by-step derivation
                        1. Simplified64.2%

                          \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                        2. Taylor expanded in NdChar around 0

                          \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
                        3. Step-by-step derivation
                          1. /-lowering-/.f64N/A

                            \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
                          2. +-lowering-+.f64N/A

                            \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{EAccept}{KbT}}}} \]
                          3. exp-lowering-exp.f64N/A

                            \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{EAccept}{KbT}}}} \]
                          4. /-lowering-/.f6459.2

                            \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{EAccept}{KbT}}}} \]
                        4. Simplified59.2%

                          \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]

                        if -1750 < KbT < 2.54999999999999997e101

                        1. Initial program 100.0%

                          \[\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}}} \]
                        2. Add Preprocessing
                        3. Taylor expanded in NdChar around inf

                          \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                        4. Step-by-step derivation
                          1. /-lowering-/.f64N/A

                            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                          2. +-lowering-+.f64N/A

                            \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                          3. exp-lowering-exp.f64N/A

                            \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                          4. /-lowering-/.f64N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                          5. associate--l+N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                          6. sub-negN/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                          7. associate-+r+N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                          8. mul-1-negN/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                          9. associate-+r+N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                          10. +-lowering-+.f64N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                          11. +-lowering-+.f64N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                          12. mul-1-negN/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                          13. sub-negN/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                          14. --lowering--.f6466.0

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                        5. Simplified66.0%

                          \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                        6. Taylor expanded in Ec around inf

                          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{-1 \cdot \frac{Ec}{KbT}}}} \]
                        7. Step-by-step derivation
                          1. associate-*r/N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{-1 \cdot Ec}{KbT}}}} \]
                          2. mul-1-negN/A

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\mathsf{neg}\left(Ec\right)}}{KbT}}} \]
                          3. /-lowering-/.f64N/A

                            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\mathsf{neg}\left(Ec\right)}{KbT}}}} \]
                          4. neg-lowering-neg.f6441.8

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{-Ec}}{KbT}}} \]
                        8. Simplified41.8%

                          \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{-Ec}{KbT}}}} \]

                        if 2.54999999999999997e101 < KbT

                        1. Initial program 99.9%

                          \[\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}}} \]
                        2. Add Preprocessing
                        3. Taylor expanded in KbT around inf

                          \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                        4. Step-by-step derivation
                          1. distribute-lft-outN/A

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                          2. *-lowering-*.f64N/A

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                          3. +-lowering-+.f6464.2

                            \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                        5. Simplified64.2%

                          \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                      5. Recombined 4 regimes into one program.
                      6. Final simplification51.4%

                        \[\leadsto \begin{array}{l} \mathbf{if}\;KbT \leq -1.28 \cdot 10^{+154}:\\ \;\;\;\;\mathsf{fma}\left(-0.25, Ev \cdot \frac{NaChar}{KbT}, 0.5 \cdot \left(NdChar + NaChar\right)\right)\\ \mathbf{elif}\;KbT \leq -1750:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{elif}\;KbT \leq 2.55 \cdot 10^{+101}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                      7. Add Preprocessing

                      Alternative 21: 40.7% accurate, 1.9× speedup?

                      \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\ \mathbf{if}\;KbT \leq -4.3 \cdot 10^{+153}:\\ \;\;\;\;\mathsf{fma}\left(-0.25, Ev \cdot \frac{NaChar}{KbT}, t\_0\right)\\ \mathbf{elif}\;KbT \leq -1.55 \cdot 10^{-27}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{elif}\;KbT \leq 1.35 \cdot 10^{+117}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                      (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                       :precision binary64
                       (let* ((t_0 (* 0.5 (+ NdChar NaChar))))
                         (if (<= KbT -4.3e+153)
                           (fma -0.25 (* Ev (/ NaChar KbT)) t_0)
                           (if (<= KbT -1.55e-27)
                             (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
                             (if (<= KbT 1.35e+117) (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) t_0)))))
                      double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                      	double t_0 = 0.5 * (NdChar + NaChar);
                      	double tmp;
                      	if (KbT <= -4.3e+153) {
                      		tmp = fma(-0.25, (Ev * (NaChar / KbT)), t_0);
                      	} else if (KbT <= -1.55e-27) {
                      		tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
                      	} else if (KbT <= 1.35e+117) {
                      		tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
                      	} else {
                      		tmp = t_0;
                      	}
                      	return tmp;
                      }
                      
                      function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                      	t_0 = Float64(0.5 * Float64(NdChar + NaChar))
                      	tmp = 0.0
                      	if (KbT <= -4.3e+153)
                      		tmp = fma(-0.25, Float64(Ev * Float64(NaChar / KbT)), t_0);
                      	elseif (KbT <= -1.55e-27)
                      		tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0));
                      	elseif (KbT <= 1.35e+117)
                      		tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0));
                      	else
                      		tmp = t_0;
                      	end
                      	return tmp
                      end
                      
                      code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -4.3e+153], N[(-0.25 * N[(Ev * N[(NaChar / KbT), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[KbT, -1.55e-27], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.35e+117], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
                      
                      \begin{array}{l}
                      
                      \\
                      \begin{array}{l}
                      t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
                      \mathbf{if}\;KbT \leq -4.3 \cdot 10^{+153}:\\
                      \;\;\;\;\mathsf{fma}\left(-0.25, Ev \cdot \frac{NaChar}{KbT}, t\_0\right)\\
                      
                      \mathbf{elif}\;KbT \leq -1.55 \cdot 10^{-27}:\\
                      \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
                      
                      \mathbf{elif}\;KbT \leq 1.35 \cdot 10^{+117}:\\
                      \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
                      
                      \mathbf{else}:\\
                      \;\;\;\;t\_0\\
                      
                      
                      \end{array}
                      \end{array}
                      
                      Derivation
                      1. Split input into 4 regimes
                      2. if KbT < -4.2999999999999998e153

                        1. Initial program 100.0%

                          \[\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}}} \]
                        2. Add Preprocessing
                        3. Taylor expanded in KbT around -inf

                          \[\leadsto \color{blue}{\frac{-1}{4} \cdot \frac{NaChar \cdot \left(\left(EAccept + \left(Ev + Vef\right)\right) - mu\right)}{KbT} + \left(\frac{-1}{4} \cdot \frac{NdChar \cdot \left(\left(EDonor + \left(Vef + mu\right)\right) - Ec\right)}{KbT} + \left(\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar\right)\right)} \]
                        4. Simplified58.6%

                          \[\leadsto \color{blue}{\mathsf{fma}\left(-0.25, \mathsf{fma}\left(NaChar, \frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}, \frac{\left(\left(EDonor + Vef\right) + \left(mu - Ec\right)\right) \cdot NdChar}{KbT}\right), 0.5 \cdot \left(NaChar + NdChar\right)\right)} \]
                        5. Taylor expanded in Ev around inf

                          \[\leadsto \mathsf{fma}\left(\frac{-1}{4}, \color{blue}{\frac{Ev \cdot NaChar}{KbT}}, \frac{1}{2} \cdot \left(NaChar + NdChar\right)\right) \]
                        6. Step-by-step derivation
                          1. associate-/l*N/A

                            \[\leadsto \mathsf{fma}\left(\frac{-1}{4}, \color{blue}{Ev \cdot \frac{NaChar}{KbT}}, \frac{1}{2} \cdot \left(NaChar + NdChar\right)\right) \]
                          2. *-lowering-*.f64N/A

                            \[\leadsto \mathsf{fma}\left(\frac{-1}{4}, \color{blue}{Ev \cdot \frac{NaChar}{KbT}}, \frac{1}{2} \cdot \left(NaChar + NdChar\right)\right) \]
                          3. /-lowering-/.f6470.2

                            \[\leadsto \mathsf{fma}\left(-0.25, Ev \cdot \color{blue}{\frac{NaChar}{KbT}}, 0.5 \cdot \left(NaChar + NdChar\right)\right) \]
                        7. Simplified70.2%

                          \[\leadsto \mathsf{fma}\left(-0.25, \color{blue}{Ev \cdot \frac{NaChar}{KbT}}, 0.5 \cdot \left(NaChar + NdChar\right)\right) \]

                        if -4.2999999999999998e153 < KbT < -1.5499999999999999e-27

                        1. Initial program 100.0%

                          \[\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}}} \]
                        2. Add Preprocessing
                        3. Taylor expanded in EAccept around inf

                          \[\leadsto \frac{NdChar}{1 + e^{\frac{\mathsf{neg}\left(\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                        4. Step-by-step derivation
                          1. Simplified64.8%

                            \[\leadsto \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\color{blue}{EAccept}}{KbT}}} \]
                          2. Taylor expanded in NdChar around 0

                            \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
                          3. Step-by-step derivation
                            1. /-lowering-/.f64N/A

                              \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]
                            2. +-lowering-+.f64N/A

                              \[\leadsto \frac{NaChar}{\color{blue}{1 + e^{\frac{EAccept}{KbT}}}} \]
                            3. exp-lowering-exp.f64N/A

                              \[\leadsto \frac{NaChar}{1 + \color{blue}{e^{\frac{EAccept}{KbT}}}} \]
                            4. /-lowering-/.f6452.5

                              \[\leadsto \frac{NaChar}{1 + e^{\color{blue}{\frac{EAccept}{KbT}}}} \]
                          4. Simplified52.5%

                            \[\leadsto \color{blue}{\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}} \]

                          if -1.5499999999999999e-27 < KbT < 1.3500000000000001e117

                          1. Initial program 100.0%

                            \[\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}}} \]
                          2. Add Preprocessing
                          3. Taylor expanded in NdChar around inf

                            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                          4. Step-by-step derivation
                            1. /-lowering-/.f64N/A

                              \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                            2. +-lowering-+.f64N/A

                              \[\leadsto \frac{NdChar}{\color{blue}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                            3. exp-lowering-exp.f64N/A

                              \[\leadsto \frac{NdChar}{1 + \color{blue}{e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                            4. /-lowering-/.f64N/A

                              \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}} \]
                            5. associate--l+N/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{EDonor + \left(\left(Vef + mu\right) - Ec\right)}}{KbT}}} \]
                            6. sub-negN/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(\left(Vef + mu\right) + \left(\mathsf{neg}\left(Ec\right)\right)\right)}}{KbT}}} \]
                            7. associate-+r+N/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \color{blue}{\left(Vef + \left(mu + \left(\mathsf{neg}\left(Ec\right)\right)\right)\right)}}{KbT}}} \]
                            8. mul-1-negN/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{EDonor + \left(Vef + \left(mu + \color{blue}{-1 \cdot Ec}\right)\right)}{KbT}}} \]
                            9. associate-+r+N/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                            10. +-lowering-+.f64N/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right) + \left(mu + -1 \cdot Ec\right)}}{KbT}}} \]
                            11. +-lowering-+.f64N/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\color{blue}{\left(EDonor + Vef\right)} + \left(mu + -1 \cdot Ec\right)}{KbT}}} \]
                            12. mul-1-negN/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu + \color{blue}{\left(\mathsf{neg}\left(Ec\right)\right)}\right)}{KbT}}} \]
                            13. sub-negN/A

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                            14. --lowering--.f6465.3

                              \[\leadsto \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \color{blue}{\left(mu - Ec\right)}}{KbT}}} \]
                          5. Simplified65.3%

                            \[\leadsto \color{blue}{\frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) + \left(mu - Ec\right)}{KbT}}}} \]
                          6. Taylor expanded in EDonor around inf

                            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]
                          7. Step-by-step derivation
                            1. /-lowering-/.f6439.4

                              \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]
                          8. Simplified39.4%

                            \[\leadsto \frac{NdChar}{1 + e^{\color{blue}{\frac{EDonor}{KbT}}}} \]

                          if 1.3500000000000001e117 < KbT

                          1. Initial program 99.9%

                            \[\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}}} \]
                          2. Add Preprocessing
                          3. Taylor expanded in KbT around inf

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                          4. Step-by-step derivation
                            1. distribute-lft-outN/A

                              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                            2. *-lowering-*.f64N/A

                              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                            3. +-lowering-+.f6464.0

                              \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                          5. Simplified64.0%

                            \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                        5. Recombined 4 regimes into one program.
                        6. Final simplification49.2%

                          \[\leadsto \begin{array}{l} \mathbf{if}\;KbT \leq -4.3 \cdot 10^{+153}:\\ \;\;\;\;\mathsf{fma}\left(-0.25, Ev \cdot \frac{NaChar}{KbT}, 0.5 \cdot \left(NdChar + NaChar\right)\right)\\ \mathbf{elif}\;KbT \leq -1.55 \cdot 10^{-27}:\\ \;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\ \mathbf{elif}\;KbT \leq 1.35 \cdot 10^{+117}:\\ \;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\ \end{array} \]
                        7. Add Preprocessing

                        Alternative 22: 22.5% accurate, 15.3× speedup?

                        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;NaChar \leq -13:\\ \;\;\;\;NaChar \cdot 0.5\\ \mathbf{elif}\;NaChar \leq 8 \cdot 10^{-65}:\\ \;\;\;\;NdChar \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;NaChar \cdot 0.5\\ \end{array} \end{array} \]
                        (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                         :precision binary64
                         (if (<= NaChar -13.0)
                           (* NaChar 0.5)
                           (if (<= NaChar 8e-65) (* NdChar 0.5) (* NaChar 0.5))))
                        double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                        	double tmp;
                        	if (NaChar <= -13.0) {
                        		tmp = NaChar * 0.5;
                        	} else if (NaChar <= 8e-65) {
                        		tmp = NdChar * 0.5;
                        	} else {
                        		tmp = NaChar * 0.5;
                        	}
                        	return tmp;
                        }
                        
                        real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                            real(8), intent (in) :: ndchar
                            real(8), intent (in) :: ec
                            real(8), intent (in) :: vef
                            real(8), intent (in) :: edonor
                            real(8), intent (in) :: mu
                            real(8), intent (in) :: kbt
                            real(8), intent (in) :: nachar
                            real(8), intent (in) :: ev
                            real(8), intent (in) :: eaccept
                            real(8) :: tmp
                            if (nachar <= (-13.0d0)) then
                                tmp = nachar * 0.5d0
                            else if (nachar <= 8d-65) then
                                tmp = ndchar * 0.5d0
                            else
                                tmp = nachar * 0.5d0
                            end if
                            code = tmp
                        end function
                        
                        public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                        	double tmp;
                        	if (NaChar <= -13.0) {
                        		tmp = NaChar * 0.5;
                        	} else if (NaChar <= 8e-65) {
                        		tmp = NdChar * 0.5;
                        	} else {
                        		tmp = NaChar * 0.5;
                        	}
                        	return tmp;
                        }
                        
                        def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                        	tmp = 0
                        	if NaChar <= -13.0:
                        		tmp = NaChar * 0.5
                        	elif NaChar <= 8e-65:
                        		tmp = NdChar * 0.5
                        	else:
                        		tmp = NaChar * 0.5
                        	return tmp
                        
                        function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                        	tmp = 0.0
                        	if (NaChar <= -13.0)
                        		tmp = Float64(NaChar * 0.5);
                        	elseif (NaChar <= 8e-65)
                        		tmp = Float64(NdChar * 0.5);
                        	else
                        		tmp = Float64(NaChar * 0.5);
                        	end
                        	return tmp
                        end
                        
                        function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                        	tmp = 0.0;
                        	if (NaChar <= -13.0)
                        		tmp = NaChar * 0.5;
                        	elseif (NaChar <= 8e-65)
                        		tmp = NdChar * 0.5;
                        	else
                        		tmp = NaChar * 0.5;
                        	end
                        	tmp_2 = tmp;
                        end
                        
                        code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -13.0], N[(NaChar * 0.5), $MachinePrecision], If[LessEqual[NaChar, 8e-65], N[(NdChar * 0.5), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]]
                        
                        \begin{array}{l}
                        
                        \\
                        \begin{array}{l}
                        \mathbf{if}\;NaChar \leq -13:\\
                        \;\;\;\;NaChar \cdot 0.5\\
                        
                        \mathbf{elif}\;NaChar \leq 8 \cdot 10^{-65}:\\
                        \;\;\;\;NdChar \cdot 0.5\\
                        
                        \mathbf{else}:\\
                        \;\;\;\;NaChar \cdot 0.5\\
                        
                        
                        \end{array}
                        \end{array}
                        
                        Derivation
                        1. Split input into 2 regimes
                        2. if NaChar < -13 or 7.99999999999999939e-65 < NaChar

                          1. Initial program 100.0%

                            \[\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}}} \]
                          2. Add Preprocessing
                          3. Taylor expanded in KbT around inf

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                          4. Step-by-step derivation
                            1. distribute-lft-outN/A

                              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                            2. *-lowering-*.f64N/A

                              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                            3. +-lowering-+.f6431.4

                              \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                          5. Simplified31.4%

                            \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                          6. Taylor expanded in NaChar around inf

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar} \]
                          7. Step-by-step derivation
                            1. *-commutativeN/A

                              \[\leadsto \color{blue}{NaChar \cdot \frac{1}{2}} \]
                            2. *-lowering-*.f6426.8

                              \[\leadsto \color{blue}{NaChar \cdot 0.5} \]
                          8. Simplified26.8%

                            \[\leadsto \color{blue}{NaChar \cdot 0.5} \]

                          if -13 < NaChar < 7.99999999999999939e-65

                          1. Initial program 100.0%

                            \[\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}}} \]
                          2. Add Preprocessing
                          3. Taylor expanded in KbT around inf

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                          4. Step-by-step derivation
                            1. distribute-lft-outN/A

                              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                            2. *-lowering-*.f64N/A

                              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                            3. +-lowering-+.f6429.8

                              \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                          5. Simplified29.8%

                            \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                          6. Taylor expanded in NaChar around 0

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot NdChar} \]
                          7. Step-by-step derivation
                            1. *-commutativeN/A

                              \[\leadsto \color{blue}{NdChar \cdot \frac{1}{2}} \]
                            2. *-lowering-*.f6428.2

                              \[\leadsto \color{blue}{NdChar \cdot 0.5} \]
                          8. Simplified28.2%

                            \[\leadsto \color{blue}{NdChar \cdot 0.5} \]
                        3. Recombined 2 regimes into one program.
                        4. Add Preprocessing

                        Alternative 23: 27.3% accurate, 30.7× speedup?

                        \[\begin{array}{l} \\ 0.5 \cdot \left(NdChar + NaChar\right) \end{array} \]
                        (FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
                         :precision binary64
                         (* 0.5 (+ NdChar NaChar)))
                        double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                        	return 0.5 * (NdChar + NaChar);
                        }
                        
                        real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
                            real(8), intent (in) :: ndchar
                            real(8), intent (in) :: ec
                            real(8), intent (in) :: vef
                            real(8), intent (in) :: edonor
                            real(8), intent (in) :: mu
                            real(8), intent (in) :: kbt
                            real(8), intent (in) :: nachar
                            real(8), intent (in) :: ev
                            real(8), intent (in) :: eaccept
                            code = 0.5d0 * (ndchar + nachar)
                        end function
                        
                        public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
                        	return 0.5 * (NdChar + NaChar);
                        }
                        
                        def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept):
                        	return 0.5 * (NdChar + NaChar)
                        
                        function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                        	return Float64(0.5 * Float64(NdChar + NaChar))
                        end
                        
                        function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept)
                        	tmp = 0.5 * (NdChar + NaChar);
                        end
                        
                        code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
                        
                        \begin{array}{l}
                        
                        \\
                        0.5 \cdot \left(NdChar + NaChar\right)
                        \end{array}
                        
                        Derivation
                        1. Initial program 100.0%

                          \[\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}}} \]
                        2. Add Preprocessing
                        3. Taylor expanded in KbT around inf

                          \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                        4. Step-by-step derivation
                          1. distribute-lft-outN/A

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                          2. *-lowering-*.f64N/A

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                          3. +-lowering-+.f6430.7

                            \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                        5. Simplified30.7%

                          \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                        6. Final simplification30.7%

                          \[\leadsto 0.5 \cdot \left(NdChar + NaChar\right) \]
                        7. Add Preprocessing

                        Alternative 24: 18.2% accurate, 46.0× speedup?

                        \[\begin{array}{l} \\ NaChar \cdot 0.5 \end{array} \]
                        (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}
                        
                        Derivation
                        1. Initial program 100.0%

                          \[\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}}} \]
                        2. Add Preprocessing
                        3. Taylor expanded in KbT around inf

                          \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar + \frac{1}{2} \cdot NdChar} \]
                        4. Step-by-step derivation
                          1. distribute-lft-outN/A

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                          2. *-lowering-*.f64N/A

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot \left(NaChar + NdChar\right)} \]
                          3. +-lowering-+.f6430.7

                            \[\leadsto 0.5 \cdot \color{blue}{\left(NaChar + NdChar\right)} \]
                        5. Simplified30.7%

                          \[\leadsto \color{blue}{0.5 \cdot \left(NaChar + NdChar\right)} \]
                        6. Taylor expanded in NaChar around inf

                          \[\leadsto \color{blue}{\frac{1}{2} \cdot NaChar} \]
                        7. Step-by-step derivation
                          1. *-commutativeN/A

                            \[\leadsto \color{blue}{NaChar \cdot \frac{1}{2}} \]
                          2. *-lowering-*.f6421.0

                            \[\leadsto \color{blue}{NaChar \cdot 0.5} \]
                        8. Simplified21.0%

                          \[\leadsto \color{blue}{NaChar \cdot 0.5} \]
                        9. Add Preprocessing

                        Reproduce

                        ?
                        herbie shell --seed 2024205 
                        (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))))))