?

Average Accuracy: 53.2% → 99.9%
Time: 12.8s
Precision: binary64
Cost: 20744

?

\[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -5:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{expm1}\left(-2 \cdot x\right), \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)}, -1\right)\\ \mathbf{elif}\;-2 \cdot x \leq 10^{-6}:\\ \;\;\;\;-0.05396825396825397 \cdot {x}^{7} + \left(-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;-1 + \frac{2}{1 + e^{-2 \cdot x}}\\ \end{array} \]
(FPCore (x y) :precision binary64 (- (/ 2.0 (+ 1.0 (exp (* -2.0 x)))) 1.0))
(FPCore (x y)
 :precision binary64
 (if (<= (* -2.0 x) -5.0)
   (fma (expm1 (* -2.0 x)) (/ 2.0 (expm1 (* x -4.0))) -1.0)
   (if (<= (* -2.0 x) 1e-6)
     (+
      (* -0.05396825396825397 (pow x 7.0))
      (+
       (* -0.3333333333333333 (pow x 3.0))
       (+ x (* 0.13333333333333333 (pow x 5.0)))))
     (+ -1.0 (/ 2.0 (+ 1.0 (exp (* -2.0 x))))))))
double code(double x, double y) {
	return (2.0 / (1.0 + exp((-2.0 * x)))) - 1.0;
}
double code(double x, double y) {
	double tmp;
	if ((-2.0 * x) <= -5.0) {
		tmp = fma(expm1((-2.0 * x)), (2.0 / expm1((x * -4.0))), -1.0);
	} else if ((-2.0 * x) <= 1e-6) {
		tmp = (-0.05396825396825397 * pow(x, 7.0)) + ((-0.3333333333333333 * pow(x, 3.0)) + (x + (0.13333333333333333 * pow(x, 5.0))));
	} else {
		tmp = -1.0 + (2.0 / (1.0 + exp((-2.0 * x))));
	}
	return tmp;
}
function code(x, y)
	return Float64(Float64(2.0 / Float64(1.0 + exp(Float64(-2.0 * x)))) - 1.0)
end
function code(x, y)
	tmp = 0.0
	if (Float64(-2.0 * x) <= -5.0)
		tmp = fma(expm1(Float64(-2.0 * x)), Float64(2.0 / expm1(Float64(x * -4.0))), -1.0);
	elseif (Float64(-2.0 * x) <= 1e-6)
		tmp = Float64(Float64(-0.05396825396825397 * (x ^ 7.0)) + Float64(Float64(-0.3333333333333333 * (x ^ 3.0)) + Float64(x + Float64(0.13333333333333333 * (x ^ 5.0)))));
	else
		tmp = Float64(-1.0 + Float64(2.0 / Float64(1.0 + exp(Float64(-2.0 * x)))));
	end
	return tmp
end
code[x_, y_] := N[(N[(2.0 / N[(1.0 + N[Exp[N[(-2.0 * x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision]
code[x_, y_] := If[LessEqual[N[(-2.0 * x), $MachinePrecision], -5.0], N[(N[(Exp[N[(-2.0 * x), $MachinePrecision]] - 1), $MachinePrecision] * N[(2.0 / N[(Exp[N[(x * -4.0), $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision], If[LessEqual[N[(-2.0 * x), $MachinePrecision], 1e-6], N[(N[(-0.05396825396825397 * N[Power[x, 7.0], $MachinePrecision]), $MachinePrecision] + N[(N[(-0.3333333333333333 * N[Power[x, 3.0], $MachinePrecision]), $MachinePrecision] + N[(x + N[(0.13333333333333333 * N[Power[x, 5.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(-1.0 + N[(2.0 / N[(1.0 + N[Exp[N[(-2.0 * x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\frac{2}{1 + e^{-2 \cdot x}} - 1
\begin{array}{l}
\mathbf{if}\;-2 \cdot x \leq -5:\\
\;\;\;\;\mathsf{fma}\left(\mathsf{expm1}\left(-2 \cdot x\right), \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)}, -1\right)\\

\mathbf{elif}\;-2 \cdot x \leq 10^{-6}:\\
\;\;\;\;-0.05396825396825397 \cdot {x}^{7} + \left(-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;-1 + \frac{2}{1 + e^{-2 \cdot x}}\\


\end{array}

Error?

Derivation?

  1. Split input into 3 regimes
  2. if (*.f64 -2 x) < -5

    1. Initial program 100.0%

      \[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
    2. Applied egg-rr100.0%

      \[\leadsto \color{blue}{\left(\frac{2}{1 - e^{x \cdot -4}} \cdot 1 + \frac{2}{1 - e^{x \cdot -4}} \cdot \left(-{\left(e^{-2}\right)}^{x}\right)\right)} - 1 \]
      Proof

      [Start]100.0

      \[ \frac{2}{1 + e^{-2 \cdot x}} - 1 \]

      flip-+ [=>]100.0

      \[ \frac{2}{\color{blue}{\frac{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}}{1 - e^{-2 \cdot x}}}} - 1 \]

      associate-/r/ [=>]100.0

      \[ \color{blue}{\frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(1 - e^{-2 \cdot x}\right)} - 1 \]

      sub-neg [=>]100.0

      \[ \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \color{blue}{\left(1 + \left(-e^{-2 \cdot x}\right)\right)} - 1 \]

      distribute-lft-in [=>]100.0

      \[ \color{blue}{\left(\frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right)} - 1 \]

      metadata-eval [=>]100.0

      \[ \left(\frac{2}{\color{blue}{1} - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right) - 1 \]

      prod-exp [=>]100.0

      \[ \left(\frac{2}{1 - \color{blue}{e^{-2 \cdot x + -2 \cdot x}}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right) - 1 \]

      *-commutative [=>]100.0

      \[ \left(\frac{2}{1 - e^{\color{blue}{x \cdot -2} + -2 \cdot x}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right) - 1 \]

      *-commutative [=>]100.0

      \[ \left(\frac{2}{1 - e^{x \cdot -2 + \color{blue}{x \cdot -2}}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right) - 1 \]

      distribute-lft-out [=>]100.0

      \[ \left(\frac{2}{1 - e^{\color{blue}{x \cdot \left(-2 + -2\right)}}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right) - 1 \]

      metadata-eval [=>]100.0

      \[ \left(\frac{2}{1 - e^{x \cdot \color{blue}{-4}}} \cdot 1 + \frac{2}{1 \cdot 1 - e^{-2 \cdot x} \cdot e^{-2 \cdot x}} \cdot \left(-e^{-2 \cdot x}\right)\right) - 1 \]
    3. Simplified100.0%

      \[\leadsto \color{blue}{2 \cdot \frac{\mathsf{expm1}\left(x \cdot -2\right)}{\mathsf{expm1}\left(x \cdot -4\right)}} - 1 \]
      Proof

      [Start]100.0

      \[ \left(\frac{2}{1 - e^{x \cdot -4}} \cdot 1 + \frac{2}{1 - e^{x \cdot -4}} \cdot \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      distribute-lft-out [=>]100.0

      \[ \color{blue}{\frac{2}{1 - e^{x \cdot -4}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right)} - 1 \]

      metadata-eval [<=]100.0

      \[ \frac{\color{blue}{\frac{-2}{-1}}}{1 - e^{x \cdot -4}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      associate-/r* [<=]100.0

      \[ \color{blue}{\frac{-2}{-1 \cdot \left(1 - e^{x \cdot -4}\right)}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      neg-mul-1 [<=]100.0

      \[ \frac{-2}{\color{blue}{-\left(1 - e^{x \cdot -4}\right)}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      neg-sub0 [=>]100.0

      \[ \frac{-2}{\color{blue}{0 - \left(1 - e^{x \cdot -4}\right)}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      associate--r- [=>]100.0

      \[ \frac{-2}{\color{blue}{\left(0 - 1\right) + e^{x \cdot -4}}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      metadata-eval [=>]100.0

      \[ \frac{-2}{\color{blue}{-1} + e^{x \cdot -4}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      +-commutative [<=]100.0

      \[ \frac{-2}{\color{blue}{e^{x \cdot -4} + -1}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      metadata-eval [<=]100.0

      \[ \frac{-2}{e^{x \cdot -4} + \color{blue}{\left(-1\right)}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      sub-neg [<=]100.0

      \[ \frac{-2}{\color{blue}{e^{x \cdot -4} - 1}} \cdot \left(1 + \left(-{\left(e^{-2}\right)}^{x}\right)\right) - 1 \]

      sub-neg [<=]100.0

      \[ \frac{-2}{e^{x \cdot -4} - 1} \cdot \color{blue}{\left(1 - {\left(e^{-2}\right)}^{x}\right)} - 1 \]

      associate-*l/ [=>]100.0

      \[ \color{blue}{\frac{-2 \cdot \left(1 - {\left(e^{-2}\right)}^{x}\right)}{e^{x \cdot -4} - 1}} - 1 \]

      metadata-eval [<=]100.0

      \[ \frac{\color{blue}{\left(2 \cdot -1\right)} \cdot \left(1 - {\left(e^{-2}\right)}^{x}\right)}{e^{x \cdot -4} - 1} - 1 \]

      associate-*r* [<=]100.0

      \[ \frac{\color{blue}{2 \cdot \left(-1 \cdot \left(1 - {\left(e^{-2}\right)}^{x}\right)\right)}}{e^{x \cdot -4} - 1} - 1 \]

      neg-mul-1 [<=]100.0

      \[ \frac{2 \cdot \color{blue}{\left(-\left(1 - {\left(e^{-2}\right)}^{x}\right)\right)}}{e^{x \cdot -4} - 1} - 1 \]

      *-lft-identity [<=]100.0

      \[ \frac{2 \cdot \left(-\left(1 - {\left(e^{-2}\right)}^{x}\right)\right)}{\color{blue}{1 \cdot \left(e^{x \cdot -4} - 1\right)}} - 1 \]

      times-frac [=>]100.0

      \[ \color{blue}{\frac{2}{1} \cdot \frac{-\left(1 - {\left(e^{-2}\right)}^{x}\right)}{e^{x \cdot -4} - 1}} - 1 \]
    4. Taylor expanded in x around inf 100.0%

      \[\leadsto \color{blue}{2 \cdot \frac{e^{-2 \cdot x} - 1}{e^{-4 \cdot x} - 1} - 1} \]
    5. Simplified100.0%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{expm1}\left(x \cdot -2\right), \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)}, -1\right)} \]
      Proof

      [Start]100.0

      \[ 2 \cdot \frac{e^{-2 \cdot x} - 1}{e^{-4 \cdot x} - 1} - 1 \]

      *-commutative [<=]100.0

      \[ 2 \cdot \frac{e^{\color{blue}{x \cdot -2}} - 1}{e^{-4 \cdot x} - 1} - 1 \]

      expm1-def [=>]100.0

      \[ 2 \cdot \frac{\color{blue}{\mathsf{expm1}\left(x \cdot -2\right)}}{e^{-4 \cdot x} - 1} - 1 \]

      *-rgt-identity [<=]100.0

      \[ 2 \cdot \frac{\color{blue}{\mathsf{expm1}\left(x \cdot -2\right) \cdot 1}}{e^{-4 \cdot x} - 1} - 1 \]

      *-commutative [=>]100.0

      \[ 2 \cdot \frac{\mathsf{expm1}\left(x \cdot -2\right) \cdot 1}{e^{\color{blue}{x \cdot -4}} - 1} - 1 \]

      expm1-def [=>]100.0

      \[ 2 \cdot \frac{\mathsf{expm1}\left(x \cdot -2\right) \cdot 1}{\color{blue}{\mathsf{expm1}\left(x \cdot -4\right)}} - 1 \]

      associate-*r/ [<=]100.0

      \[ 2 \cdot \color{blue}{\left(\mathsf{expm1}\left(x \cdot -2\right) \cdot \frac{1}{\mathsf{expm1}\left(x \cdot -4\right)}\right)} - 1 \]

      associate-*r/ [=>]100.0

      \[ 2 \cdot \color{blue}{\frac{\mathsf{expm1}\left(x \cdot -2\right) \cdot 1}{\mathsf{expm1}\left(x \cdot -4\right)}} - 1 \]

      *-rgt-identity [=>]100.0

      \[ 2 \cdot \frac{\color{blue}{\mathsf{expm1}\left(x \cdot -2\right)}}{\mathsf{expm1}\left(x \cdot -4\right)} - 1 \]

      associate-*r/ [=>]100.0

      \[ \color{blue}{\frac{2 \cdot \mathsf{expm1}\left(x \cdot -2\right)}{\mathsf{expm1}\left(x \cdot -4\right)}} - 1 \]

      associate-*l/ [<=]100.0

      \[ \color{blue}{\frac{2}{\mathsf{expm1}\left(x \cdot -4\right)} \cdot \mathsf{expm1}\left(x \cdot -2\right)} - 1 \]

      *-commutative [<=]100.0

      \[ \color{blue}{\mathsf{expm1}\left(x \cdot -2\right) \cdot \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)}} - 1 \]

      sub-neg [=>]100.0

      \[ \color{blue}{\mathsf{expm1}\left(x \cdot -2\right) \cdot \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)} + \left(-1\right)} \]

      metadata-eval [=>]100.0

      \[ \mathsf{expm1}\left(x \cdot -2\right) \cdot \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)} + \color{blue}{-1} \]

    if -5 < (*.f64 -2 x) < 9.99999999999999955e-7

    1. Initial program 7.6%

      \[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
    2. Taylor expanded in x around 0 99.9%

      \[\leadsto \color{blue}{-0.05396825396825397 \cdot {x}^{7} + \left(-0.3333333333333333 \cdot {x}^{3} + \left(0.13333333333333333 \cdot {x}^{5} + x\right)\right)} \]

    if 9.99999999999999955e-7 < (*.f64 -2 x)

    1. Initial program 99.7%

      \[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
  3. Recombined 3 regimes into one program.
  4. Final simplification99.9%

    \[\leadsto \begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -5:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{expm1}\left(-2 \cdot x\right), \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)}, -1\right)\\ \mathbf{elif}\;-2 \cdot x \leq 10^{-6}:\\ \;\;\;\;-0.05396825396825397 \cdot {x}^{7} + \left(-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;-1 + \frac{2}{1 + e^{-2 \cdot x}}\\ \end{array} \]

Alternatives

Alternative 1
Accuracy99.9%
Cost20036
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -0.02:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{expm1}\left(-2 \cdot x\right), \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)}, -1\right)\\ \mathbf{elif}\;-2 \cdot x \leq 10^{-6}:\\ \;\;\;\;-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\\ \mathbf{else}:\\ \;\;\;\;-1 + \frac{2}{1 + e^{-2 \cdot x}}\\ \end{array} \]
Alternative 2
Accuracy99.9%
Cost14025
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -0.02 \lor \neg \left(-2 \cdot x \leq 10^{-6}\right):\\ \;\;\;\;-1 + \frac{2}{1 + e^{-2 \cdot x}}\\ \mathbf{else}:\\ \;\;\;\;-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\\ \end{array} \]
Alternative 3
Accuracy99.9%
Cost7497
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -0.02 \lor \neg \left(-2 \cdot x \leq 10^{-6}\right):\\ \;\;\;\;-1 + \frac{2}{1 + e^{-2 \cdot x}}\\ \mathbf{else}:\\ \;\;\;\;x + -0.3333333333333333 \cdot {x}^{3}\\ \end{array} \]
Alternative 4
Accuracy79.3%
Cost708
\[\begin{array}{l} \mathbf{if}\;x \leq -0.68:\\ \;\;\;\;-1\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{x + 2}{x \cdot 2}}\\ \end{array} \]
Alternative 5
Accuracy76.8%
Cost196
\[\begin{array}{l} \mathbf{if}\;x \leq -1:\\ \;\;\;\;-1\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \]
Alternative 6
Accuracy27.2%
Cost64
\[-1 \]

Error

Reproduce?

herbie shell --seed 2023137 
(FPCore (x y)
  :name "Logistic function from Lakshay Garg"
  :precision binary64
  (- (/ 2.0 (+ 1.0 (exp (* -2.0 x)))) 1.0))