Harley's example

Percentage Accurate: 91.0% → 99.7%
Time: 1.3min
Alternatives: 7
Speedup: 835.0×

Specification

?
\[0 < c\_p \land 0 < c\_n\]
\[\begin{array}{l} \\ \begin{array}{l} t_1 := \frac{1}{1 + e^{-t}}\\ t_2 := \frac{1}{1 + e^{-s}}\\ \frac{{t\_2}^{c\_p} \cdot {\left(1 - t\_2\right)}^{c\_n}}{{t\_1}^{c\_p} \cdot {\left(1 - t\_1\right)}^{c\_n}} \end{array} \end{array} \]
(FPCore (c_p c_n t s)
 :precision binary64
 (let* ((t_1 (/ 1.0 (+ 1.0 (exp (- t))))) (t_2 (/ 1.0 (+ 1.0 (exp (- s))))))
   (/
    (* (pow t_2 c_p) (pow (- 1.0 t_2) c_n))
    (* (pow t_1 c_p) (pow (- 1.0 t_1) c_n)))))
double code(double c_p, double c_n, double t, double s) {
	double t_1 = 1.0 / (1.0 + exp(-t));
	double t_2 = 1.0 / (1.0 + exp(-s));
	return (pow(t_2, c_p) * pow((1.0 - t_2), c_n)) / (pow(t_1, c_p) * pow((1.0 - t_1), c_n));
}
real(8) function code(c_p, c_n, t, s)
    real(8), intent (in) :: c_p
    real(8), intent (in) :: c_n
    real(8), intent (in) :: t
    real(8), intent (in) :: s
    real(8) :: t_1
    real(8) :: t_2
    t_1 = 1.0d0 / (1.0d0 + exp(-t))
    t_2 = 1.0d0 / (1.0d0 + exp(-s))
    code = ((t_2 ** c_p) * ((1.0d0 - t_2) ** c_n)) / ((t_1 ** c_p) * ((1.0d0 - t_1) ** c_n))
end function
public static double code(double c_p, double c_n, double t, double s) {
	double t_1 = 1.0 / (1.0 + Math.exp(-t));
	double t_2 = 1.0 / (1.0 + Math.exp(-s));
	return (Math.pow(t_2, c_p) * Math.pow((1.0 - t_2), c_n)) / (Math.pow(t_1, c_p) * Math.pow((1.0 - t_1), c_n));
}
def code(c_p, c_n, t, s):
	t_1 = 1.0 / (1.0 + math.exp(-t))
	t_2 = 1.0 / (1.0 + math.exp(-s))
	return (math.pow(t_2, c_p) * math.pow((1.0 - t_2), c_n)) / (math.pow(t_1, c_p) * math.pow((1.0 - t_1), c_n))
function code(c_p, c_n, t, s)
	t_1 = Float64(1.0 / Float64(1.0 + exp(Float64(-t))))
	t_2 = Float64(1.0 / Float64(1.0 + exp(Float64(-s))))
	return Float64(Float64((t_2 ^ c_p) * (Float64(1.0 - t_2) ^ c_n)) / Float64((t_1 ^ c_p) * (Float64(1.0 - t_1) ^ c_n)))
end
function tmp = code(c_p, c_n, t, s)
	t_1 = 1.0 / (1.0 + exp(-t));
	t_2 = 1.0 / (1.0 + exp(-s));
	tmp = ((t_2 ^ c_p) * ((1.0 - t_2) ^ c_n)) / ((t_1 ^ c_p) * ((1.0 - t_1) ^ c_n));
end
code[c$95$p_, c$95$n_, t_, s_] := Block[{t$95$1 = N[(1.0 / N[(1.0 + N[Exp[(-t)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 / N[(1.0 + N[Exp[(-s)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[Power[t$95$2, c$95$p], $MachinePrecision] * N[Power[N[(1.0 - t$95$2), $MachinePrecision], c$95$n], $MachinePrecision]), $MachinePrecision] / N[(N[Power[t$95$1, c$95$p], $MachinePrecision] * N[Power[N[(1.0 - t$95$1), $MachinePrecision], c$95$n], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_1 := \frac{1}{1 + e^{-t}}\\
t_2 := \frac{1}{1 + e^{-s}}\\
\frac{{t\_2}^{c\_p} \cdot {\left(1 - t\_2\right)}^{c\_n}}{{t\_1}^{c\_p} \cdot {\left(1 - t\_1\right)}^{c\_n}}
\end{array}
\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 7 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: 91.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_1 := \frac{1}{1 + e^{-t}}\\ t_2 := \frac{1}{1 + e^{-s}}\\ \frac{{t\_2}^{c\_p} \cdot {\left(1 - t\_2\right)}^{c\_n}}{{t\_1}^{c\_p} \cdot {\left(1 - t\_1\right)}^{c\_n}} \end{array} \end{array} \]
(FPCore (c_p c_n t s)
 :precision binary64
 (let* ((t_1 (/ 1.0 (+ 1.0 (exp (- t))))) (t_2 (/ 1.0 (+ 1.0 (exp (- s))))))
   (/
    (* (pow t_2 c_p) (pow (- 1.0 t_2) c_n))
    (* (pow t_1 c_p) (pow (- 1.0 t_1) c_n)))))
double code(double c_p, double c_n, double t, double s) {
	double t_1 = 1.0 / (1.0 + exp(-t));
	double t_2 = 1.0 / (1.0 + exp(-s));
	return (pow(t_2, c_p) * pow((1.0 - t_2), c_n)) / (pow(t_1, c_p) * pow((1.0 - t_1), c_n));
}
real(8) function code(c_p, c_n, t, s)
    real(8), intent (in) :: c_p
    real(8), intent (in) :: c_n
    real(8), intent (in) :: t
    real(8), intent (in) :: s
    real(8) :: t_1
    real(8) :: t_2
    t_1 = 1.0d0 / (1.0d0 + exp(-t))
    t_2 = 1.0d0 / (1.0d0 + exp(-s))
    code = ((t_2 ** c_p) * ((1.0d0 - t_2) ** c_n)) / ((t_1 ** c_p) * ((1.0d0 - t_1) ** c_n))
end function
public static double code(double c_p, double c_n, double t, double s) {
	double t_1 = 1.0 / (1.0 + Math.exp(-t));
	double t_2 = 1.0 / (1.0 + Math.exp(-s));
	return (Math.pow(t_2, c_p) * Math.pow((1.0 - t_2), c_n)) / (Math.pow(t_1, c_p) * Math.pow((1.0 - t_1), c_n));
}
def code(c_p, c_n, t, s):
	t_1 = 1.0 / (1.0 + math.exp(-t))
	t_2 = 1.0 / (1.0 + math.exp(-s))
	return (math.pow(t_2, c_p) * math.pow((1.0 - t_2), c_n)) / (math.pow(t_1, c_p) * math.pow((1.0 - t_1), c_n))
function code(c_p, c_n, t, s)
	t_1 = Float64(1.0 / Float64(1.0 + exp(Float64(-t))))
	t_2 = Float64(1.0 / Float64(1.0 + exp(Float64(-s))))
	return Float64(Float64((t_2 ^ c_p) * (Float64(1.0 - t_2) ^ c_n)) / Float64((t_1 ^ c_p) * (Float64(1.0 - t_1) ^ c_n)))
end
function tmp = code(c_p, c_n, t, s)
	t_1 = 1.0 / (1.0 + exp(-t));
	t_2 = 1.0 / (1.0 + exp(-s));
	tmp = ((t_2 ^ c_p) * ((1.0 - t_2) ^ c_n)) / ((t_1 ^ c_p) * ((1.0 - t_1) ^ c_n));
end
code[c$95$p_, c$95$n_, t_, s_] := Block[{t$95$1 = N[(1.0 / N[(1.0 + N[Exp[(-t)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 / N[(1.0 + N[Exp[(-s)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[Power[t$95$2, c$95$p], $MachinePrecision] * N[Power[N[(1.0 - t$95$2), $MachinePrecision], c$95$n], $MachinePrecision]), $MachinePrecision] / N[(N[Power[t$95$1, c$95$p], $MachinePrecision] * N[Power[N[(1.0 - t$95$1), $MachinePrecision], c$95$n], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_1 := \frac{1}{1 + e^{-t}}\\
t_2 := \frac{1}{1 + e^{-s}}\\
\frac{{t\_2}^{c\_p} \cdot {\left(1 - t\_2\right)}^{c\_n}}{{t\_1}^{c\_p} \cdot {\left(1 - t\_1\right)}^{c\_n}}
\end{array}
\end{array}

Alternative 1: 99.7% accurate, 7.3× speedup?

\[\begin{array}{l} \\ e^{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + s \cdot \left(\left(c\_n - c\_p\right) \cdot -0.5\right)} \end{array} \]
(FPCore (c_p c_n t s)
 :precision binary64
 (exp (+ (* (* t 0.5) (- c_n c_p)) (* s (* (- c_n c_p) -0.5)))))
double code(double c_p, double c_n, double t, double s) {
	return exp((((t * 0.5) * (c_n - c_p)) + (s * ((c_n - c_p) * -0.5))));
}
real(8) function code(c_p, c_n, t, s)
    real(8), intent (in) :: c_p
    real(8), intent (in) :: c_n
    real(8), intent (in) :: t
    real(8), intent (in) :: s
    code = exp((((t * 0.5d0) * (c_n - c_p)) + (s * ((c_n - c_p) * (-0.5d0)))))
end function
public static double code(double c_p, double c_n, double t, double s) {
	return Math.exp((((t * 0.5) * (c_n - c_p)) + (s * ((c_n - c_p) * -0.5))));
}
def code(c_p, c_n, t, s):
	return math.exp((((t * 0.5) * (c_n - c_p)) + (s * ((c_n - c_p) * -0.5))))
function code(c_p, c_n, t, s)
	return exp(Float64(Float64(Float64(t * 0.5) * Float64(c_n - c_p)) + Float64(s * Float64(Float64(c_n - c_p) * -0.5))))
end
function tmp = code(c_p, c_n, t, s)
	tmp = exp((((t * 0.5) * (c_n - c_p)) + (s * ((c_n - c_p) * -0.5))));
end
code[c$95$p_, c$95$n_, t_, s_] := N[Exp[N[(N[(N[(t * 0.5), $MachinePrecision] * N[(c$95$n - c$95$p), $MachinePrecision]), $MachinePrecision] + N[(s * N[(N[(c$95$n - c$95$p), $MachinePrecision] * -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
e^{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + s \cdot \left(\left(c\_n - c\_p\right) \cdot -0.5\right)}
\end{array}
Derivation
  1. Initial program 91.1%

    \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
  2. Add Preprocessing
  3. Applied egg-rr96.8%

    \[\leadsto \color{blue}{e^{c\_p \cdot \left(\left(0 - \mathsf{log1p}\left(\frac{1}{e^{s}}\right)\right) - \left(0 - \mathsf{log1p}\left(e^{0 - t}\right)\right)\right) + c\_n \cdot \left(\mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{s}}}\right) - \mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{t}}}\right)\right)}} \]
  4. Taylor expanded in t around 0

    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right) + \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)}\right) \]
  5. Step-by-step derivation
    1. +-lowering-+.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right)\right), \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)\right) \]
  6. Simplified99.6%

    \[\leadsto e^{\color{blue}{c\_n \cdot \left(\mathsf{log1p}\left(\frac{-1}{1 + e^{0 - s}}\right) - \log 0.5\right) + \left(c\_p \cdot \left(\log 2 - \mathsf{log1p}\left(e^{0 - s}\right)\right) + t \cdot \left(c\_p \cdot -0.5 + c\_n \cdot 0.5\right)\right)}} \]
  7. Taylor expanded in s around 0

    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)}\right) \]
  8. Step-by-step derivation
    1. +-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right) + s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right) \]
    2. +-lowering-+.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    3. +-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    4. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    5. cancel-sign-sub-invN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    6. distribute-lft-out--N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    7. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(\left(t \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    8. *-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(\left(\frac{1}{2} \cdot t\right) \cdot \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    9. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2} \cdot t\right), \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    10. *-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\left(t \cdot \frac{1}{2}\right), \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    11. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    12. --lowering--.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    13. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    14. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\left(-1 \cdot \frac{1}{2}\right) \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    15. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n\right) + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    16. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n\right) + \left(-1 \cdot \frac{-1}{2}\right) \cdot c\_p\right)\right)\right)\right) \]
    17. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n\right) + -1 \cdot \left(\frac{-1}{2} \cdot c\_p\right)\right)\right)\right)\right) \]
    18. distribute-lft-inN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right)\right)\right)\right) \]
    19. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right)\right)\right)\right) \]
    20. cancel-sign-sub-invN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right)\right)\right)\right) \]
    21. distribute-lft-out--N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right)\right)\right) \]
    22. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\left(-1 \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right)\right)\right)\right) \]
    23. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\frac{-1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right)\right) \]
  9. Simplified100.0%

    \[\leadsto e^{\color{blue}{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + s \cdot \left(-0.5 \cdot \left(c\_n - c\_p\right)\right)}} \]
  10. Final simplification100.0%

    \[\leadsto e^{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + s \cdot \left(\left(c\_n - c\_p\right) \cdot -0.5\right)} \]
  11. Add Preprocessing

Alternative 2: 98.7% accurate, 7.8× speedup?

\[\begin{array}{l} \\ e^{-0.5 \cdot \left(\left(c\_n - c\_p\right) \cdot s\right)} \end{array} \]
(FPCore (c_p c_n t s) :precision binary64 (exp (* -0.5 (* (- c_n c_p) s))))
double code(double c_p, double c_n, double t, double s) {
	return exp((-0.5 * ((c_n - c_p) * s)));
}
real(8) function code(c_p, c_n, t, s)
    real(8), intent (in) :: c_p
    real(8), intent (in) :: c_n
    real(8), intent (in) :: t
    real(8), intent (in) :: s
    code = exp(((-0.5d0) * ((c_n - c_p) * s)))
end function
public static double code(double c_p, double c_n, double t, double s) {
	return Math.exp((-0.5 * ((c_n - c_p) * s)));
}
def code(c_p, c_n, t, s):
	return math.exp((-0.5 * ((c_n - c_p) * s)))
function code(c_p, c_n, t, s)
	return exp(Float64(-0.5 * Float64(Float64(c_n - c_p) * s)))
end
function tmp = code(c_p, c_n, t, s)
	tmp = exp((-0.5 * ((c_n - c_p) * s)));
end
code[c$95$p_, c$95$n_, t_, s_] := N[Exp[N[(-0.5 * N[(N[(c$95$n - c$95$p), $MachinePrecision] * s), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
e^{-0.5 \cdot \left(\left(c\_n - c\_p\right) \cdot s\right)}
\end{array}
Derivation
  1. Initial program 91.1%

    \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
  2. Add Preprocessing
  3. Applied egg-rr96.8%

    \[\leadsto \color{blue}{e^{c\_p \cdot \left(\left(0 - \mathsf{log1p}\left(\frac{1}{e^{s}}\right)\right) - \left(0 - \mathsf{log1p}\left(e^{0 - t}\right)\right)\right) + c\_n \cdot \left(\mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{s}}}\right) - \mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{t}}}\right)\right)}} \]
  4. Taylor expanded in t around 0

    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right) + \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)}\right) \]
  5. Step-by-step derivation
    1. +-lowering-+.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right)\right), \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)\right) \]
  6. Simplified99.6%

    \[\leadsto e^{\color{blue}{c\_n \cdot \left(\mathsf{log1p}\left(\frac{-1}{1 + e^{0 - s}}\right) - \log 0.5\right) + \left(c\_p \cdot \left(\log 2 - \mathsf{log1p}\left(e^{0 - s}\right)\right) + t \cdot \left(c\_p \cdot -0.5 + c\_n \cdot 0.5\right)\right)}} \]
  7. Taylor expanded in s around 0

    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)}\right) \]
  8. Step-by-step derivation
    1. +-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right) + s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right) \]
    2. +-lowering-+.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    3. +-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    4. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    5. cancel-sign-sub-invN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    6. distribute-lft-out--N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    7. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(\left(t \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    8. *-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(\left(\frac{1}{2} \cdot t\right) \cdot \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    9. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2} \cdot t\right), \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    10. *-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\left(t \cdot \frac{1}{2}\right), \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    11. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \left(c\_n - c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    12. --lowering--.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \left(s \cdot \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    13. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\frac{-1}{2} \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    14. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\left(-1 \cdot \frac{1}{2}\right) \cdot c\_n + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    15. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n\right) + \frac{1}{2} \cdot c\_p\right)\right)\right)\right) \]
    16. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n\right) + \left(-1 \cdot \frac{-1}{2}\right) \cdot c\_p\right)\right)\right)\right) \]
    17. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n\right) + -1 \cdot \left(\frac{-1}{2} \cdot c\_p\right)\right)\right)\right)\right) \]
    18. distribute-lft-inN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right)\right)\right)\right) \]
    19. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right)\right)\right)\right) \]
    20. cancel-sign-sub-invN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right)\right)\right)\right) \]
    21. distribute-lft-out--N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(-1 \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right)\right)\right) \]
    22. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\left(-1 \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right)\right)\right)\right) \]
    23. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right), \mathsf{*.f64}\left(s, \left(\frac{-1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right)\right) \]
  9. Simplified100.0%

    \[\leadsto e^{\color{blue}{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + s \cdot \left(-0.5 \cdot \left(c\_n - c\_p\right)\right)}} \]
  10. Taylor expanded in t around 0

    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(\frac{-1}{2} \cdot \left(s \cdot \left(c\_n - c\_p\right)\right)\right)}\right) \]
  11. Step-by-step derivation
    1. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\frac{-1}{2}, \left(s \cdot \left(c\_n - c\_p\right)\right)\right)\right) \]
    2. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\frac{-1}{2}, \mathsf{*.f64}\left(s, \left(c\_n - c\_p\right)\right)\right)\right) \]
    3. --lowering--.f6498.8%

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\frac{-1}{2}, \mathsf{*.f64}\left(s, \mathsf{\_.f64}\left(c\_n, c\_p\right)\right)\right)\right) \]
  12. Simplified98.8%

    \[\leadsto e^{\color{blue}{-0.5 \cdot \left(s \cdot \left(c\_n - c\_p\right)\right)}} \]
  13. Final simplification98.8%

    \[\leadsto e^{-0.5 \cdot \left(\left(c\_n - c\_p\right) \cdot s\right)} \]
  14. Add Preprocessing

Alternative 3: 95.7% accurate, 8.0× speedup?

\[\begin{array}{l} \\ e^{\left(t \cdot 0.5\right) \cdot c\_n} \end{array} \]
(FPCore (c_p c_n t s) :precision binary64 (exp (* (* t 0.5) c_n)))
double code(double c_p, double c_n, double t, double s) {
	return exp(((t * 0.5) * c_n));
}
real(8) function code(c_p, c_n, t, s)
    real(8), intent (in) :: c_p
    real(8), intent (in) :: c_n
    real(8), intent (in) :: t
    real(8), intent (in) :: s
    code = exp(((t * 0.5d0) * c_n))
end function
public static double code(double c_p, double c_n, double t, double s) {
	return Math.exp(((t * 0.5) * c_n));
}
def code(c_p, c_n, t, s):
	return math.exp(((t * 0.5) * c_n))
function code(c_p, c_n, t, s)
	return exp(Float64(Float64(t * 0.5) * c_n))
end
function tmp = code(c_p, c_n, t, s)
	tmp = exp(((t * 0.5) * c_n));
end
code[c$95$p_, c$95$n_, t_, s_] := N[Exp[N[(N[(t * 0.5), $MachinePrecision] * c$95$n), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
e^{\left(t \cdot 0.5\right) \cdot c\_n}
\end{array}
Derivation
  1. Initial program 91.1%

    \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
  2. Add Preprocessing
  3. Applied egg-rr96.8%

    \[\leadsto \color{blue}{e^{c\_p \cdot \left(\left(0 - \mathsf{log1p}\left(\frac{1}{e^{s}}\right)\right) - \left(0 - \mathsf{log1p}\left(e^{0 - t}\right)\right)\right) + c\_n \cdot \left(\mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{s}}}\right) - \mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{t}}}\right)\right)}} \]
  4. Taylor expanded in t around 0

    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right) + \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)}\right) \]
  5. Step-by-step derivation
    1. +-lowering-+.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right)\right), \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)\right) \]
  6. Simplified99.6%

    \[\leadsto e^{\color{blue}{c\_n \cdot \left(\mathsf{log1p}\left(\frac{-1}{1 + e^{0 - s}}\right) - \log 0.5\right) + \left(c\_p \cdot \left(\log 2 - \mathsf{log1p}\left(e^{0 - s}\right)\right) + t \cdot \left(c\_p \cdot -0.5 + c\_n \cdot 0.5\right)\right)}} \]
  7. Taylor expanded in s around 0

    \[\leadsto \color{blue}{e^{t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)}} \]
  8. Step-by-step derivation
    1. exp-lowering-exp.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right) \]
    2. +-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right)\right) \]
    3. metadata-evalN/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right)\right) \]
    4. cancel-sign-sub-invN/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right)\right) \]
    5. distribute-lft-out--N/A

      \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right) \]
    6. associate-*r*N/A

      \[\leadsto \mathsf{exp.f64}\left(\left(\left(t \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right)\right) \]
    7. *-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\left(\left(\frac{1}{2} \cdot t\right) \cdot \left(c\_n - c\_p\right)\right)\right) \]
    8. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2} \cdot t\right), \left(c\_n - c\_p\right)\right)\right) \]
    9. *-commutativeN/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\left(t \cdot \frac{1}{2}\right), \left(c\_n - c\_p\right)\right)\right) \]
    10. *-lowering-*.f64N/A

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \left(c\_n - c\_p\right)\right)\right) \]
    11. --lowering--.f6495.0%

      \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right)\right) \]
  9. Simplified95.0%

    \[\leadsto \color{blue}{e^{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right)}} \]
  10. Taylor expanded in c_n around inf

    \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \color{blue}{c\_n}\right)\right) \]
  11. Step-by-step derivation
    1. Simplified94.5%

      \[\leadsto e^{\left(t \cdot 0.5\right) \cdot \color{blue}{c\_n}} \]
    2. Add Preprocessing

    Alternative 4: 94.2% accurate, 39.8× speedup?

    \[\begin{array}{l} \\ 1 + t \cdot \left(t \cdot \left(\left(c\_n - c\_p\right) \cdot \left(\left(c\_n - c\_p\right) \cdot 0.125\right)\right) + 0.5 \cdot \left(c\_n - c\_p\right)\right) \end{array} \]
    (FPCore (c_p c_n t s)
     :precision binary64
     (+
      1.0
      (* t (+ (* t (* (- c_n c_p) (* (- c_n c_p) 0.125))) (* 0.5 (- c_n c_p))))))
    double code(double c_p, double c_n, double t, double s) {
    	return 1.0 + (t * ((t * ((c_n - c_p) * ((c_n - c_p) * 0.125))) + (0.5 * (c_n - c_p))));
    }
    
    real(8) function code(c_p, c_n, t, s)
        real(8), intent (in) :: c_p
        real(8), intent (in) :: c_n
        real(8), intent (in) :: t
        real(8), intent (in) :: s
        code = 1.0d0 + (t * ((t * ((c_n - c_p) * ((c_n - c_p) * 0.125d0))) + (0.5d0 * (c_n - c_p))))
    end function
    
    public static double code(double c_p, double c_n, double t, double s) {
    	return 1.0 + (t * ((t * ((c_n - c_p) * ((c_n - c_p) * 0.125))) + (0.5 * (c_n - c_p))));
    }
    
    def code(c_p, c_n, t, s):
    	return 1.0 + (t * ((t * ((c_n - c_p) * ((c_n - c_p) * 0.125))) + (0.5 * (c_n - c_p))))
    
    function code(c_p, c_n, t, s)
    	return Float64(1.0 + Float64(t * Float64(Float64(t * Float64(Float64(c_n - c_p) * Float64(Float64(c_n - c_p) * 0.125))) + Float64(0.5 * Float64(c_n - c_p)))))
    end
    
    function tmp = code(c_p, c_n, t, s)
    	tmp = 1.0 + (t * ((t * ((c_n - c_p) * ((c_n - c_p) * 0.125))) + (0.5 * (c_n - c_p))));
    end
    
    code[c$95$p_, c$95$n_, t_, s_] := N[(1.0 + N[(t * N[(N[(t * N[(N[(c$95$n - c$95$p), $MachinePrecision] * N[(N[(c$95$n - c$95$p), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 * N[(c$95$n - c$95$p), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
    
    \begin{array}{l}
    
    \\
    1 + t \cdot \left(t \cdot \left(\left(c\_n - c\_p\right) \cdot \left(\left(c\_n - c\_p\right) \cdot 0.125\right)\right) + 0.5 \cdot \left(c\_n - c\_p\right)\right)
    \end{array}
    
    Derivation
    1. Initial program 91.1%

      \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
    2. Add Preprocessing
    3. Applied egg-rr96.8%

      \[\leadsto \color{blue}{e^{c\_p \cdot \left(\left(0 - \mathsf{log1p}\left(\frac{1}{e^{s}}\right)\right) - \left(0 - \mathsf{log1p}\left(e^{0 - t}\right)\right)\right) + c\_n \cdot \left(\mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{s}}}\right) - \mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{t}}}\right)\right)}} \]
    4. Taylor expanded in t around 0

      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right) + \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)}\right) \]
    5. Step-by-step derivation
      1. +-lowering-+.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right)\right), \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)\right) \]
    6. Simplified99.6%

      \[\leadsto e^{\color{blue}{c\_n \cdot \left(\mathsf{log1p}\left(\frac{-1}{1 + e^{0 - s}}\right) - \log 0.5\right) + \left(c\_p \cdot \left(\log 2 - \mathsf{log1p}\left(e^{0 - s}\right)\right) + t \cdot \left(c\_p \cdot -0.5 + c\_n \cdot 0.5\right)\right)}} \]
    7. Taylor expanded in s around 0

      \[\leadsto \color{blue}{e^{t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)}} \]
    8. Step-by-step derivation
      1. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right) \]
      2. +-commutativeN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right)\right) \]
      3. metadata-evalN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right)\right) \]
      4. cancel-sign-sub-invN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right)\right) \]
      5. distribute-lft-out--N/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right) \]
      6. associate-*r*N/A

        \[\leadsto \mathsf{exp.f64}\left(\left(\left(t \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right)\right) \]
      7. *-commutativeN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(\left(\frac{1}{2} \cdot t\right) \cdot \left(c\_n - c\_p\right)\right)\right) \]
      8. *-lowering-*.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2} \cdot t\right), \left(c\_n - c\_p\right)\right)\right) \]
      9. *-commutativeN/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\left(t \cdot \frac{1}{2}\right), \left(c\_n - c\_p\right)\right)\right) \]
      10. *-lowering-*.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \left(c\_n - c\_p\right)\right)\right) \]
      11. --lowering--.f6495.0%

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right)\right) \]
    9. Simplified95.0%

      \[\leadsto \color{blue}{e^{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right)}} \]
    10. Taylor expanded in t around 0

      \[\leadsto \color{blue}{1 + t \cdot \left(\frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right) + \frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)} \]
    11. Step-by-step derivation
      1. +-lowering-+.f64N/A

        \[\leadsto \mathsf{+.f64}\left(1, \color{blue}{\left(t \cdot \left(\frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right) + \frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)}\right) \]
      2. +-commutativeN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(t \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right) + \color{blue}{\frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)}\right)\right)\right) \]
      3. distribute-lft-out--N/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(t \cdot \left(\left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right) + \color{blue}{\frac{1}{8}} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)\right)\right)\right) \]
      4. cancel-sign-sub-invN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(t \cdot \left(\left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right) + \color{blue}{\frac{1}{8}} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)\right)\right)\right) \]
      5. metadata-evalN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(t \cdot \left(\left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right) + \frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)\right)\right)\right) \]
      6. +-commutativeN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(t \cdot \left(\left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right) + \color{blue}{\frac{1}{8}} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)\right)\right)\right) \]
      7. *-lowering-*.f64N/A

        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(t, \color{blue}{\left(\left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right) + \frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)\right)}\right)\right) \]
      8. +-commutativeN/A

        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(t, \left(\frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right) + \color{blue}{\left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)}\right)\right)\right) \]
      9. +-lowering-+.f64N/A

        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(t, \mathsf{+.f64}\left(\left(\frac{1}{8} \cdot \left(t \cdot {\left(c\_n - c\_p\right)}^{2}\right)\right), \color{blue}{\left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)}\right)\right)\right) \]
    12. Simplified93.9%

      \[\leadsto \color{blue}{1 + t \cdot \left(t \cdot \left(\left(c\_n - c\_p\right) \cdot \left(\left(c\_n - c\_p\right) \cdot 0.125\right)\right) + \left(c\_n - c\_p\right) \cdot 0.5\right)} \]
    13. Final simplification93.9%

      \[\leadsto 1 + t \cdot \left(t \cdot \left(\left(c\_n - c\_p\right) \cdot \left(\left(c\_n - c\_p\right) \cdot 0.125\right)\right) + 0.5 \cdot \left(c\_n - c\_p\right)\right) \]
    14. Add Preprocessing

    Alternative 5: 94.2% accurate, 92.8× speedup?

    \[\begin{array}{l} \\ \left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + 1 \end{array} \]
    (FPCore (c_p c_n t s) :precision binary64 (+ (* (* t 0.5) (- c_n c_p)) 1.0))
    double code(double c_p, double c_n, double t, double s) {
    	return ((t * 0.5) * (c_n - c_p)) + 1.0;
    }
    
    real(8) function code(c_p, c_n, t, s)
        real(8), intent (in) :: c_p
        real(8), intent (in) :: c_n
        real(8), intent (in) :: t
        real(8), intent (in) :: s
        code = ((t * 0.5d0) * (c_n - c_p)) + 1.0d0
    end function
    
    public static double code(double c_p, double c_n, double t, double s) {
    	return ((t * 0.5) * (c_n - c_p)) + 1.0;
    }
    
    def code(c_p, c_n, t, s):
    	return ((t * 0.5) * (c_n - c_p)) + 1.0
    
    function code(c_p, c_n, t, s)
    	return Float64(Float64(Float64(t * 0.5) * Float64(c_n - c_p)) + 1.0)
    end
    
    function tmp = code(c_p, c_n, t, s)
    	tmp = ((t * 0.5) * (c_n - c_p)) + 1.0;
    end
    
    code[c$95$p_, c$95$n_, t_, s_] := N[(N[(N[(t * 0.5), $MachinePrecision] * N[(c$95$n - c$95$p), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]
    
    \begin{array}{l}
    
    \\
    \left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + 1
    \end{array}
    
    Derivation
    1. Initial program 91.1%

      \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
    2. Add Preprocessing
    3. Applied egg-rr96.8%

      \[\leadsto \color{blue}{e^{c\_p \cdot \left(\left(0 - \mathsf{log1p}\left(\frac{1}{e^{s}}\right)\right) - \left(0 - \mathsf{log1p}\left(e^{0 - t}\right)\right)\right) + c\_n \cdot \left(\mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{s}}}\right) - \mathsf{log1p}\left(\frac{1}{-1 + \frac{-1}{e^{t}}}\right)\right)}} \]
    4. Taylor expanded in t around 0

      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right) + \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)}\right) \]
    5. Step-by-step derivation
      1. +-lowering-+.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{+.f64}\left(\left(c\_n \cdot \left(\log \left(1 - \frac{1}{1 + \frac{1}{e^{s}}}\right) - \log \frac{1}{2}\right)\right), \left(c\_p \cdot \left(\log 2 - \log \left(1 + \frac{1}{e^{s}}\right)\right) + t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right)\right) \]
    6. Simplified99.6%

      \[\leadsto e^{\color{blue}{c\_n \cdot \left(\mathsf{log1p}\left(\frac{-1}{1 + e^{0 - s}}\right) - \log 0.5\right) + \left(c\_p \cdot \left(\log 2 - \mathsf{log1p}\left(e^{0 - s}\right)\right) + t \cdot \left(c\_p \cdot -0.5 + c\_n \cdot 0.5\right)\right)}} \]
    7. Taylor expanded in s around 0

      \[\leadsto \color{blue}{e^{t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)}} \]
    8. Step-by-step derivation
      1. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)\right) \]
      2. +-commutativeN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right)\right)\right) \]
      3. metadata-evalN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right)\right)\right) \]
      4. cancel-sign-sub-invN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right)\right)\right) \]
      5. distribute-lft-out--N/A

        \[\leadsto \mathsf{exp.f64}\left(\left(t \cdot \left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right)\right)\right) \]
      6. associate-*r*N/A

        \[\leadsto \mathsf{exp.f64}\left(\left(\left(t \cdot \frac{1}{2}\right) \cdot \left(c\_n - c\_p\right)\right)\right) \]
      7. *-commutativeN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(\left(\frac{1}{2} \cdot t\right) \cdot \left(c\_n - c\_p\right)\right)\right) \]
      8. *-lowering-*.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2} \cdot t\right), \left(c\_n - c\_p\right)\right)\right) \]
      9. *-commutativeN/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\left(t \cdot \frac{1}{2}\right), \left(c\_n - c\_p\right)\right)\right) \]
      10. *-lowering-*.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \left(c\_n - c\_p\right)\right)\right) \]
      11. --lowering--.f6495.0%

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(t, \frac{1}{2}\right), \mathsf{\_.f64}\left(c\_n, c\_p\right)\right)\right) \]
    9. Simplified95.0%

      \[\leadsto \color{blue}{e^{\left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right)}} \]
    10. Taylor expanded in t around 0

      \[\leadsto \color{blue}{1 + \frac{1}{2} \cdot \left(t \cdot \left(c\_n - c\_p\right)\right)} \]
    11. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto 1 + \left(t \cdot \left(c\_n - c\_p\right)\right) \cdot \color{blue}{\frac{1}{2}} \]
      2. associate-*r*N/A

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

        \[\leadsto 1 + t \cdot \left(\frac{1}{2} \cdot \color{blue}{\left(c\_n - c\_p\right)}\right) \]
      4. distribute-lft-out--N/A

        \[\leadsto 1 + t \cdot \left(\frac{1}{2} \cdot c\_n - \color{blue}{\frac{1}{2} \cdot c\_p}\right) \]
      5. cancel-sign-sub-invN/A

        \[\leadsto 1 + t \cdot \left(\frac{1}{2} \cdot c\_n + \color{blue}{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p}\right) \]
      6. metadata-evalN/A

        \[\leadsto 1 + t \cdot \left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right) \]
      7. +-commutativeN/A

        \[\leadsto 1 + t \cdot \left(\frac{-1}{2} \cdot c\_p + \color{blue}{\frac{1}{2} \cdot c\_n}\right) \]
      8. +-lowering-+.f64N/A

        \[\leadsto \mathsf{+.f64}\left(1, \color{blue}{\left(t \cdot \left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right)\right)}\right) \]
      9. *-commutativeN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(\frac{-1}{2} \cdot c\_p + \frac{1}{2} \cdot c\_n\right) \cdot \color{blue}{t}\right)\right) \]
      10. +-commutativeN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(\frac{1}{2} \cdot c\_n + \frac{-1}{2} \cdot c\_p\right) \cdot t\right)\right) \]
      11. metadata-evalN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(\frac{1}{2} \cdot c\_n + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right) \cdot c\_p\right) \cdot t\right)\right) \]
      12. cancel-sign-sub-invN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(\frac{1}{2} \cdot c\_n - \frac{1}{2} \cdot c\_p\right) \cdot t\right)\right) \]
      13. distribute-lft-out--N/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(\frac{1}{2} \cdot \left(c\_n - c\_p\right)\right) \cdot t\right)\right) \]
      14. *-commutativeN/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(\left(c\_n - c\_p\right) \cdot \frac{1}{2}\right) \cdot t\right)\right) \]
      15. associate-*l*N/A

        \[\leadsto \mathsf{+.f64}\left(1, \left(\left(c\_n - c\_p\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot t\right)}\right)\right) \]
      16. *-lowering-*.f64N/A

        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(c\_n - c\_p\right), \color{blue}{\left(\frac{1}{2} \cdot t\right)}\right)\right) \]
      17. --lowering--.f64N/A

        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{\_.f64}\left(c\_n, c\_p\right), \left(\color{blue}{\frac{1}{2}} \cdot t\right)\right)\right) \]
      18. *-lowering-*.f6493.8%

        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{\_.f64}\left(c\_n, c\_p\right), \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{t}\right)\right)\right) \]
    12. Simplified93.8%

      \[\leadsto \color{blue}{1 + \left(c\_n - c\_p\right) \cdot \left(0.5 \cdot t\right)} \]
    13. Final simplification93.8%

      \[\leadsto \left(t \cdot 0.5\right) \cdot \left(c\_n - c\_p\right) + 1 \]
    14. Add Preprocessing

    Alternative 6: 94.2% accurate, 119.3× speedup?

    \[\begin{array}{l} \\ 1 + -0.5 \cdot \left(t \cdot c\_p\right) \end{array} \]
    (FPCore (c_p c_n t s) :precision binary64 (+ 1.0 (* -0.5 (* t c_p))))
    double code(double c_p, double c_n, double t, double s) {
    	return 1.0 + (-0.5 * (t * c_p));
    }
    
    real(8) function code(c_p, c_n, t, s)
        real(8), intent (in) :: c_p
        real(8), intent (in) :: c_n
        real(8), intent (in) :: t
        real(8), intent (in) :: s
        code = 1.0d0 + ((-0.5d0) * (t * c_p))
    end function
    
    public static double code(double c_p, double c_n, double t, double s) {
    	return 1.0 + (-0.5 * (t * c_p));
    }
    
    def code(c_p, c_n, t, s):
    	return 1.0 + (-0.5 * (t * c_p))
    
    function code(c_p, c_n, t, s)
    	return Float64(1.0 + Float64(-0.5 * Float64(t * c_p)))
    end
    
    function tmp = code(c_p, c_n, t, s)
    	tmp = 1.0 + (-0.5 * (t * c_p));
    end
    
    code[c$95$p_, c$95$n_, t_, s_] := N[(1.0 + N[(-0.5 * N[(t * c$95$p), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
    
    \begin{array}{l}
    
    \\
    1 + -0.5 \cdot \left(t \cdot c\_p\right)
    \end{array}
    
    Derivation
    1. Initial program 91.1%

      \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
    2. Add Preprocessing
    3. Taylor expanded in c_n around 0

      \[\leadsto \color{blue}{\frac{{\left(\frac{1}{1 + e^{\mathsf{neg}\left(s\right)}}\right)}^{c\_p}}{{\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}}} \]
    4. Step-by-step derivation
      1. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(s\right)}}\right)}^{c\_p}\right), \color{blue}{\left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)}\right) \]
      2. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\left(\frac{1}{1 + e^{\mathsf{neg}\left(s\right)}}\right), c\_p\right), \left({\color{blue}{\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}}^{c\_p}\right)\right) \]
      3. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + e^{\mathsf{neg}\left(s\right)}\right)\right), c\_p\right), \left({\left(\frac{\color{blue}{1}}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      4. +-lowering-+.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(e^{\mathsf{neg}\left(s\right)}\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      5. exp-negN/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(\frac{1}{e^{s}}\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      6. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \left(e^{s}\right)\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      7. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      8. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right), \color{blue}{c\_p}\right)\right) \]
      9. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + e^{\mathsf{neg}\left(t\right)}\right)\right), c\_p\right)\right) \]
      10. +-lowering-+.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(e^{\mathsf{neg}\left(t\right)}\right)\right)\right), c\_p\right)\right) \]
      11. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(t\right)\right)\right)\right)\right), c\_p\right)\right) \]
      12. neg-sub0N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\left(0 - t\right)\right)\right)\right), c\_p\right)\right) \]
      13. --lowering--.f6492.8%

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, t\right)\right)\right)\right), c\_p\right)\right) \]
    5. Simplified92.8%

      \[\leadsto \color{blue}{\frac{{\left(\frac{1}{1 + \frac{1}{e^{s}}}\right)}^{c\_p}}{{\left(\frac{1}{1 + e^{0 - t}}\right)}^{c\_p}}} \]
    6. Taylor expanded in s around 0

      \[\leadsto \color{blue}{\frac{{\frac{1}{2}}^{c\_p}}{{\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}}} \]
    7. Step-by-step derivation
      1. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\left({\frac{1}{2}}^{c\_p}\right), \color{blue}{\left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)}\right) \]
      2. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \left({\color{blue}{\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}}^{c\_p}\right)\right) \]
      3. neg-mul-1N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \left({\left(\frac{1}{1 + e^{-1 \cdot t}}\right)}^{c\_p}\right)\right) \]
      4. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\left(\frac{1}{1 + e^{-1 \cdot t}}\right), \color{blue}{c\_p}\right)\right) \]
      5. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + e^{-1 \cdot t}\right)\right), c\_p\right)\right) \]
      6. neg-mul-1N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + e^{\mathsf{neg}\left(t\right)}\right)\right), c\_p\right)\right) \]
      7. rec-expN/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + \frac{1}{e^{t}}\right)\right), c\_p\right)\right) \]
      8. +-lowering-+.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(\frac{1}{e^{t}}\right)\right)\right), c\_p\right)\right) \]
      9. rec-expN/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(e^{\mathsf{neg}\left(t\right)}\right)\right)\right), c\_p\right)\right) \]
      10. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(t\right)\right)\right)\right)\right), c\_p\right)\right) \]
      11. neg-sub0N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\left(0 - t\right)\right)\right)\right), c\_p\right)\right) \]
      12. --lowering--.f6491.3%

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\frac{1}{2}, c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, t\right)\right)\right)\right), c\_p\right)\right) \]
    8. Simplified91.3%

      \[\leadsto \color{blue}{\frac{{0.5}^{c\_p}}{{\left(\frac{1}{1 + e^{0 - t}}\right)}^{c\_p}}} \]
    9. Taylor expanded in t around 0

      \[\leadsto \color{blue}{1 + \frac{-1}{2} \cdot \left(c\_p \cdot t\right)} \]
    10. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \frac{-1}{2} \cdot \left(c\_p \cdot t\right) + \color{blue}{1} \]
      2. +-lowering-+.f64N/A

        \[\leadsto \mathsf{+.f64}\left(\left(\frac{-1}{2} \cdot \left(c\_p \cdot t\right)\right), \color{blue}{1}\right) \]
      3. *-lowering-*.f64N/A

        \[\leadsto \mathsf{+.f64}\left(\mathsf{*.f64}\left(\frac{-1}{2}, \left(c\_p \cdot t\right)\right), 1\right) \]
      4. *-lowering-*.f6493.7%

        \[\leadsto \mathsf{+.f64}\left(\mathsf{*.f64}\left(\frac{-1}{2}, \mathsf{*.f64}\left(c\_p, t\right)\right), 1\right) \]
    11. Simplified93.7%

      \[\leadsto \color{blue}{-0.5 \cdot \left(c\_p \cdot t\right) + 1} \]
    12. Final simplification93.7%

      \[\leadsto 1 + -0.5 \cdot \left(t \cdot c\_p\right) \]
    13. Add Preprocessing

    Alternative 7: 94.2% accurate, 835.0× speedup?

    \[\begin{array}{l} \\ 1 \end{array} \]
    (FPCore (c_p c_n t s) :precision binary64 1.0)
    double code(double c_p, double c_n, double t, double s) {
    	return 1.0;
    }
    
    real(8) function code(c_p, c_n, t, s)
        real(8), intent (in) :: c_p
        real(8), intent (in) :: c_n
        real(8), intent (in) :: t
        real(8), intent (in) :: s
        code = 1.0d0
    end function
    
    public static double code(double c_p, double c_n, double t, double s) {
    	return 1.0;
    }
    
    def code(c_p, c_n, t, s):
    	return 1.0
    
    function code(c_p, c_n, t, s)
    	return 1.0
    end
    
    function tmp = code(c_p, c_n, t, s)
    	tmp = 1.0;
    end
    
    code[c$95$p_, c$95$n_, t_, s_] := 1.0
    
    \begin{array}{l}
    
    \\
    1
    \end{array}
    
    Derivation
    1. Initial program 91.1%

      \[\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c\_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c\_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c\_n}} \]
    2. Add Preprocessing
    3. Taylor expanded in c_n around 0

      \[\leadsto \color{blue}{\frac{{\left(\frac{1}{1 + e^{\mathsf{neg}\left(s\right)}}\right)}^{c\_p}}{{\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}}} \]
    4. Step-by-step derivation
      1. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(s\right)}}\right)}^{c\_p}\right), \color{blue}{\left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)}\right) \]
      2. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\left(\frac{1}{1 + e^{\mathsf{neg}\left(s\right)}}\right), c\_p\right), \left({\color{blue}{\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}}^{c\_p}\right)\right) \]
      3. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + e^{\mathsf{neg}\left(s\right)}\right)\right), c\_p\right), \left({\left(\frac{\color{blue}{1}}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      4. +-lowering-+.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(e^{\mathsf{neg}\left(s\right)}\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      5. exp-negN/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(\frac{1}{e^{s}}\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      6. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \left(e^{s}\right)\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      7. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \left({\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right)}^{c\_p}\right)\right) \]
      8. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\left(\frac{1}{1 + e^{\mathsf{neg}\left(t\right)}}\right), \color{blue}{c\_p}\right)\right) \]
      9. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \left(1 + e^{\mathsf{neg}\left(t\right)}\right)\right), c\_p\right)\right) \]
      10. +-lowering-+.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \left(e^{\mathsf{neg}\left(t\right)}\right)\right)\right), c\_p\right)\right) \]
      11. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(t\right)\right)\right)\right)\right), c\_p\right)\right) \]
      12. neg-sub0N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\left(0 - t\right)\right)\right)\right), c\_p\right)\right) \]
      13. --lowering--.f6492.8%

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(1, \mathsf{exp.f64}\left(s\right)\right)\right)\right), c\_p\right), \mathsf{pow.f64}\left(\mathsf{/.f64}\left(1, \mathsf{+.f64}\left(1, \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, t\right)\right)\right)\right), c\_p\right)\right) \]
    5. Simplified92.8%

      \[\leadsto \color{blue}{\frac{{\left(\frac{1}{1 + \frac{1}{e^{s}}}\right)}^{c\_p}}{{\left(\frac{1}{1 + e^{0 - t}}\right)}^{c\_p}}} \]
    6. Taylor expanded in c_p around 0

      \[\leadsto \color{blue}{1} \]
    7. Step-by-step derivation
      1. Simplified93.5%

        \[\leadsto \color{blue}{1} \]
      2. Add Preprocessing

      Developer Target 1: 96.4% accurate, 1.3× speedup?

      \[\begin{array}{l} \\ {\left(\frac{1 + e^{-t}}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(\frac{1 + e^{t}}{1 + e^{s}}\right)}^{c\_n} \end{array} \]
      (FPCore (c_p c_n t s)
       :precision binary64
       (*
        (pow (/ (+ 1.0 (exp (- t))) (+ 1.0 (exp (- s)))) c_p)
        (pow (/ (+ 1.0 (exp t)) (+ 1.0 (exp s))) c_n)))
      double code(double c_p, double c_n, double t, double s) {
      	return pow(((1.0 + exp(-t)) / (1.0 + exp(-s))), c_p) * pow(((1.0 + exp(t)) / (1.0 + exp(s))), c_n);
      }
      
      real(8) function code(c_p, c_n, t, s)
          real(8), intent (in) :: c_p
          real(8), intent (in) :: c_n
          real(8), intent (in) :: t
          real(8), intent (in) :: s
          code = (((1.0d0 + exp(-t)) / (1.0d0 + exp(-s))) ** c_p) * (((1.0d0 + exp(t)) / (1.0d0 + exp(s))) ** c_n)
      end function
      
      public static double code(double c_p, double c_n, double t, double s) {
      	return Math.pow(((1.0 + Math.exp(-t)) / (1.0 + Math.exp(-s))), c_p) * Math.pow(((1.0 + Math.exp(t)) / (1.0 + Math.exp(s))), c_n);
      }
      
      def code(c_p, c_n, t, s):
      	return math.pow(((1.0 + math.exp(-t)) / (1.0 + math.exp(-s))), c_p) * math.pow(((1.0 + math.exp(t)) / (1.0 + math.exp(s))), c_n)
      
      function code(c_p, c_n, t, s)
      	return Float64((Float64(Float64(1.0 + exp(Float64(-t))) / Float64(1.0 + exp(Float64(-s)))) ^ c_p) * (Float64(Float64(1.0 + exp(t)) / Float64(1.0 + exp(s))) ^ c_n))
      end
      
      function tmp = code(c_p, c_n, t, s)
      	tmp = (((1.0 + exp(-t)) / (1.0 + exp(-s))) ^ c_p) * (((1.0 + exp(t)) / (1.0 + exp(s))) ^ c_n);
      end
      
      code[c$95$p_, c$95$n_, t_, s_] := N[(N[Power[N[(N[(1.0 + N[Exp[(-t)], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[Exp[(-s)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], c$95$p], $MachinePrecision] * N[Power[N[(N[(1.0 + N[Exp[t], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[Exp[s], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], c$95$n], $MachinePrecision]), $MachinePrecision]
      
      \begin{array}{l}
      
      \\
      {\left(\frac{1 + e^{-t}}{1 + e^{-s}}\right)}^{c\_p} \cdot {\left(\frac{1 + e^{t}}{1 + e^{s}}\right)}^{c\_n}
      \end{array}
      

      Reproduce

      ?
      herbie shell --seed 2024184 
      (FPCore (c_p c_n t s)
        :name "Harley's example"
        :precision binary64
        :pre (and (< 0.0 c_p) (< 0.0 c_n))
      
        :alt
        (! :herbie-platform default (* (pow (/ (+ 1 (exp (- t))) (+ 1 (exp (- s)))) c_p) (pow (/ (+ 1 (exp t)) (+ 1 (exp s))) c_n)))
      
        (/ (* (pow (/ 1.0 (+ 1.0 (exp (- s)))) c_p) (pow (- 1.0 (/ 1.0 (+ 1.0 (exp (- s))))) c_n)) (* (pow (/ 1.0 (+ 1.0 (exp (- t)))) c_p) (pow (- 1.0 (/ 1.0 (+ 1.0 (exp (- t))))) c_n))))