Average Error: 29.1 → 0.0
Time: 14.5s
Precision: 64
\[\frac{2}{1 + e^{-2 \cdot x}} - 1\]
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \le -0.12853531169107207:\\ \;\;\;\;e^{\log \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\\ \mathbf{elif}\;-2 \cdot x \le 0.0023969580591003724:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{3}, \left(x \cdot x\right) \cdot x, \mathsf{fma}\left({x}^{5}, \frac{2}{15}, x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;e^{\log \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\\ \end{array}\]
\frac{2}{1 + e^{-2 \cdot x}} - 1
\begin{array}{l}
\mathbf{if}\;-2 \cdot x \le -0.12853531169107207:\\
\;\;\;\;e^{\log \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\\

\mathbf{elif}\;-2 \cdot x \le 0.0023969580591003724:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{3}, \left(x \cdot x\right) \cdot x, \mathsf{fma}\left({x}^{5}, \frac{2}{15}, x\right)\right)\\

\mathbf{else}:\\
\;\;\;\;e^{\log \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\\

\end{array}
double f(double x, double __attribute__((unused)) y) {
        double r1365125 = 2.0;
        double r1365126 = 1.0;
        double r1365127 = -2.0;
        double r1365128 = x;
        double r1365129 = r1365127 * r1365128;
        double r1365130 = exp(r1365129);
        double r1365131 = r1365126 + r1365130;
        double r1365132 = r1365125 / r1365131;
        double r1365133 = r1365132 - r1365126;
        return r1365133;
}

double f(double x, double __attribute__((unused)) y) {
        double r1365134 = -2.0;
        double r1365135 = x;
        double r1365136 = r1365134 * r1365135;
        double r1365137 = -0.12853531169107207;
        bool r1365138 = r1365136 <= r1365137;
        double r1365139 = 2.0;
        double r1365140 = exp(r1365136);
        double r1365141 = 1.0;
        double r1365142 = r1365140 + r1365141;
        double r1365143 = r1365139 / r1365142;
        double r1365144 = r1365143 - r1365141;
        double r1365145 = cbrt(r1365144);
        double r1365146 = r1365145 * r1365145;
        double r1365147 = log(r1365146);
        double r1365148 = exp(r1365147);
        double r1365149 = r1365148 * r1365145;
        double r1365150 = 0.0023969580591003724;
        bool r1365151 = r1365136 <= r1365150;
        double r1365152 = -0.3333333333333333;
        double r1365153 = r1365135 * r1365135;
        double r1365154 = r1365153 * r1365135;
        double r1365155 = 5.0;
        double r1365156 = pow(r1365135, r1365155);
        double r1365157 = 0.13333333333333333;
        double r1365158 = fma(r1365156, r1365157, r1365135);
        double r1365159 = fma(r1365152, r1365154, r1365158);
        double r1365160 = r1365151 ? r1365159 : r1365149;
        double r1365161 = r1365138 ? r1365149 : r1365160;
        return r1365161;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Split input into 2 regimes
  2. if (* -2 x) < -0.12853531169107207 or 0.0023969580591003724 < (* -2 x)

    1. Initial program 0.0

      \[\frac{2}{1 + e^{-2 \cdot x}} - 1\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.0

      \[\leadsto \color{blue}{\left(\sqrt[3]{\frac{2}{1 + e^{-2 \cdot x}} - 1} \cdot \sqrt[3]{\frac{2}{1 + e^{-2 \cdot x}} - 1}\right) \cdot \sqrt[3]{\frac{2}{1 + e^{-2 \cdot x}} - 1}}\]
    4. Using strategy rm
    5. Applied add-exp-log0.0

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

    if -0.12853531169107207 < (* -2 x) < 0.0023969580591003724

    1. Initial program 59.0

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

      \[\leadsto \color{blue}{\left(x + \frac{2}{15} \cdot {x}^{5}\right) - \frac{1}{3} \cdot {x}^{3}}\]
    3. Simplified0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{-1}{3}, x \cdot \left(x \cdot x\right), \mathsf{fma}\left({x}^{5}, \frac{2}{15}, x\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;-2 \cdot x \le -0.12853531169107207:\\ \;\;\;\;e^{\log \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\\ \mathbf{elif}\;-2 \cdot x \le 0.0023969580591003724:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{3}, \left(x \cdot x\right) \cdot x, \mathsf{fma}\left({x}^{5}, \frac{2}{15}, x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;e^{\log \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2019153 +o rules:numerics
(FPCore (x y)
  :name "Logistic function from Lakshay Garg"
  (- (/ 2 (+ 1 (exp (* -2 x)))) 1))