?

Average Accuracy: 54.7% → 99.8%
Time: 9.7s
Precision: binary64
Cost: 14024

?

\[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -20:\\ \;\;\;\;\mathsf{expm1}\left(-2 \cdot x\right) \cdot \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)} + -1\\ \mathbf{elif}\;-2 \cdot x \leq 0.0001:\\ \;\;\;\;-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{2}{1 + e^{-2 \cdot x}} + -1\\ \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) -20.0)
   (+ (* (expm1 (* -2.0 x)) (/ 2.0 (expm1 (* x -4.0)))) -1.0)
   (if (<= (* -2.0 x) 0.0001)
     (+
      (* -0.3333333333333333 (pow x 3.0))
      (+ x (* 0.13333333333333333 (pow x 5.0))))
     (+ (/ 2.0 (+ 1.0 (exp (* -2.0 x)))) -1.0))))
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) <= -20.0) {
		tmp = (expm1((-2.0 * x)) * (2.0 / expm1((x * -4.0)))) + -1.0;
	} else if ((-2.0 * x) <= 0.0001) {
		tmp = (-0.3333333333333333 * pow(x, 3.0)) + (x + (0.13333333333333333 * pow(x, 5.0)));
	} else {
		tmp = (2.0 / (1.0 + exp((-2.0 * x)))) + -1.0;
	}
	return tmp;
}
public static double code(double x, double y) {
	return (2.0 / (1.0 + Math.exp((-2.0 * x)))) - 1.0;
}
public static double code(double x, double y) {
	double tmp;
	if ((-2.0 * x) <= -20.0) {
		tmp = (Math.expm1((-2.0 * x)) * (2.0 / Math.expm1((x * -4.0)))) + -1.0;
	} else if ((-2.0 * x) <= 0.0001) {
		tmp = (-0.3333333333333333 * Math.pow(x, 3.0)) + (x + (0.13333333333333333 * Math.pow(x, 5.0)));
	} else {
		tmp = (2.0 / (1.0 + Math.exp((-2.0 * x)))) + -1.0;
	}
	return tmp;
}
def code(x, y):
	return (2.0 / (1.0 + math.exp((-2.0 * x)))) - 1.0
def code(x, y):
	tmp = 0
	if (-2.0 * x) <= -20.0:
		tmp = (math.expm1((-2.0 * x)) * (2.0 / math.expm1((x * -4.0)))) + -1.0
	elif (-2.0 * x) <= 0.0001:
		tmp = (-0.3333333333333333 * math.pow(x, 3.0)) + (x + (0.13333333333333333 * math.pow(x, 5.0)))
	else:
		tmp = (2.0 / (1.0 + math.exp((-2.0 * x)))) + -1.0
	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) <= -20.0)
		tmp = Float64(Float64(expm1(Float64(-2.0 * x)) * Float64(2.0 / expm1(Float64(x * -4.0)))) + -1.0);
	elseif (Float64(-2.0 * x) <= 0.0001)
		tmp = Float64(Float64(-0.3333333333333333 * (x ^ 3.0)) + Float64(x + Float64(0.13333333333333333 * (x ^ 5.0))));
	else
		tmp = Float64(Float64(2.0 / Float64(1.0 + exp(Float64(-2.0 * x)))) + -1.0);
	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], -20.0], N[(N[(N[(Exp[N[(-2.0 * x), $MachinePrecision]] - 1), $MachinePrecision] * N[(2.0 / N[(Exp[N[(x * -4.0), $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision], If[LessEqual[N[(-2.0 * x), $MachinePrecision], 0.0001], 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], N[(N[(2.0 / N[(1.0 + N[Exp[N[(-2.0 * x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision]]]
\frac{2}{1 + e^{-2 \cdot x}} - 1
\begin{array}{l}
\mathbf{if}\;-2 \cdot x \leq -20:\\
\;\;\;\;\mathsf{expm1}\left(-2 \cdot x\right) \cdot \frac{2}{\mathsf{expm1}\left(x \cdot -4\right)} + -1\\

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

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


\end{array}

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation?

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

    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}{\mathsf{expm1}\left(x \cdot -2\right) \cdot \frac{2}{\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 \]

      *-commutative [=>]100.0

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

      associate-*r/ [<=]100.0

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

    if -20 < (*.f64 -2 x) < 1.00000000000000005e-4

    1. Initial program 8.0%

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

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

    if 1.00000000000000005e-4 < (*.f64 -2 x)

    1. Initial program 99.9%

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

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

Alternatives

Alternative 1
Accuracy99.8%
Cost14025
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -20 \lor \neg \left(-2 \cdot x \leq 0.0001\right):\\ \;\;\;\;\frac{2}{1 + e^{-2 \cdot x}} + -1\\ \mathbf{else}:\\ \;\;\;\;-0.3333333333333333 \cdot {x}^{3} + \left(x + 0.13333333333333333 \cdot {x}^{5}\right)\\ \end{array} \]
Alternative 2
Accuracy99.8%
Cost7497
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \leq -20 \lor \neg \left(-2 \cdot x \leq 0.0001\right):\\ \;\;\;\;\frac{2}{1 + e^{-2 \cdot x}} + -1\\ \mathbf{else}:\\ \;\;\;\;x + -0.3333333333333333 \cdot {x}^{3}\\ \end{array} \]
Alternative 3
Accuracy75.7%
Cost836
\[\begin{array}{l} \mathbf{if}\;x \leq -1:\\ \;\;\;\;-1\\ \mathbf{else}:\\ \;\;\;\;x \cdot \left(\left(x + 2\right) \cdot \frac{1}{x + 2}\right)\\ \end{array} \]
Alternative 4
Accuracy75.7%
Cost196
\[\begin{array}{l} \mathbf{if}\;x \leq -1:\\ \;\;\;\;-1\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \]
Alternative 5
Accuracy27.6%
Cost64
\[-1 \]

Error

Reproduce?

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