Average Error: 29.1 → 0.0
Time: 24.6s
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 r1425144 = 2.0;
        double r1425145 = 1.0;
        double r1425146 = -2.0;
        double r1425147 = x;
        double r1425148 = r1425146 * r1425147;
        double r1425149 = exp(r1425148);
        double r1425150 = r1425145 + r1425149;
        double r1425151 = r1425144 / r1425150;
        double r1425152 = r1425151 - r1425145;
        return r1425152;
}

double f(double x, double __attribute__((unused)) y) {
        double r1425153 = -2.0;
        double r1425154 = x;
        double r1425155 = r1425153 * r1425154;
        double r1425156 = -0.12853531169107207;
        bool r1425157 = r1425155 <= r1425156;
        double r1425158 = 2.0;
        double r1425159 = exp(r1425155);
        double r1425160 = 1.0;
        double r1425161 = r1425159 + r1425160;
        double r1425162 = r1425158 / r1425161;
        double r1425163 = r1425162 - r1425160;
        double r1425164 = cbrt(r1425163);
        double r1425165 = r1425164 * r1425164;
        double r1425166 = log(r1425165);
        double r1425167 = exp(r1425166);
        double r1425168 = r1425167 * r1425164;
        double r1425169 = 0.0023969580591003724;
        bool r1425170 = r1425155 <= r1425169;
        double r1425171 = -0.3333333333333333;
        double r1425172 = r1425154 * r1425154;
        double r1425173 = r1425172 * r1425154;
        double r1425174 = 5.0;
        double r1425175 = pow(r1425154, r1425174);
        double r1425176 = 0.13333333333333333;
        double r1425177 = fma(r1425175, r1425176, r1425154);
        double r1425178 = fma(r1425171, r1425173, r1425177);
        double r1425179 = r1425170 ? r1425178 : r1425168;
        double r1425180 = r1425157 ? r1425168 : r1425179;
        return r1425180;
}

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))