Average Error: 29.6 → 0.4
Time: 1.7m
Precision: 64
\[\frac{2}{1 + e^{-2 \cdot x}} - 1\]
\[\begin{array}{l} \mathbf{if}\;-2 \cdot x \le -306416.6377200472052209079265594482421875:\\ \;\;\;\;\frac{\frac{\frac{2}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{e^{-2 \cdot x} + 1}} - 1\\ \mathbf{elif}\;-2 \cdot x \le 4.236193905385104490052934015503760534216 \cdot 10^{-7}:\\ \;\;\;\;x \cdot \left(1 - \left(x \cdot x\right) \cdot 0.3333333333333333703407674875052180141211\right) - \left(5.5511151231257827021181583404541015625 \cdot 10^{-17} \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{2}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{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 -306416.6377200472052209079265594482421875:\\
\;\;\;\;\frac{\frac{\frac{2}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{e^{-2 \cdot x} + 1}} - 1\\

\mathbf{elif}\;-2 \cdot x \le 4.236193905385104490052934015503760534216 \cdot 10^{-7}:\\
\;\;\;\;x \cdot \left(1 - \left(x \cdot x\right) \cdot 0.3333333333333333703407674875052180141211\right) - \left(5.5511151231257827021181583404541015625 \cdot 10^{-17} \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\\

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

\end{array}
double f(double x, double __attribute__((unused)) y) {
        double r4807362 = 2.0;
        double r4807363 = 1.0;
        double r4807364 = -2.0;
        double r4807365 = x;
        double r4807366 = r4807364 * r4807365;
        double r4807367 = exp(r4807366);
        double r4807368 = r4807363 + r4807367;
        double r4807369 = r4807362 / r4807368;
        double r4807370 = r4807369 - r4807363;
        return r4807370;
}

double f(double x, double __attribute__((unused)) y) {
        double r4807371 = -2.0;
        double r4807372 = x;
        double r4807373 = r4807371 * r4807372;
        double r4807374 = -306416.6377200472;
        bool r4807375 = r4807373 <= r4807374;
        double r4807376 = 2.0;
        double r4807377 = exp(r4807373);
        double r4807378 = 1.0;
        double r4807379 = r4807377 + r4807378;
        double r4807380 = sqrt(r4807379);
        double r4807381 = sqrt(r4807380);
        double r4807382 = r4807376 / r4807381;
        double r4807383 = r4807382 / r4807381;
        double r4807384 = r4807383 / r4807380;
        double r4807385 = r4807384 - r4807378;
        double r4807386 = 4.2361939053851045e-07;
        bool r4807387 = r4807373 <= r4807386;
        double r4807388 = r4807372 * r4807372;
        double r4807389 = 0.33333333333333337;
        double r4807390 = r4807388 * r4807389;
        double r4807391 = r4807378 - r4807390;
        double r4807392 = r4807372 * r4807391;
        double r4807393 = 5.551115123125783e-17;
        double r4807394 = r4807393 * r4807388;
        double r4807395 = r4807394 * r4807388;
        double r4807396 = r4807392 - r4807395;
        double r4807397 = r4807387 ? r4807396 : r4807385;
        double r4807398 = r4807375 ? r4807385 : r4807397;
        return r4807398;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (* -2.0 x) < -306416.6377200472 or 4.2361939053851045e-07 < (* -2.0 x)

    1. Initial program 0.1

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

      \[\leadsto \frac{2}{\color{blue}{\sqrt{1 + e^{-2 \cdot x}} \cdot \sqrt{1 + e^{-2 \cdot x}}}} - 1\]
    4. Applied associate-/r*0.1

      \[\leadsto \color{blue}{\frac{\frac{2}{\sqrt{1 + e^{-2 \cdot x}}}}{\sqrt{1 + e^{-2 \cdot x}}}} - 1\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt0.1

      \[\leadsto \frac{\frac{2}{\sqrt{\color{blue}{\sqrt{1 + e^{-2 \cdot x}} \cdot \sqrt{1 + e^{-2 \cdot x}}}}}}{\sqrt{1 + e^{-2 \cdot x}}} - 1\]
    7. Applied sqrt-prod0.1

      \[\leadsto \frac{\frac{2}{\color{blue}{\sqrt{\sqrt{1 + e^{-2 \cdot x}}} \cdot \sqrt{\sqrt{1 + e^{-2 \cdot x}}}}}}{\sqrt{1 + e^{-2 \cdot x}}} - 1\]
    8. Applied associate-/r*0.1

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

    if -306416.6377200472 < (* -2.0 x) < 4.2361939053851045e-07

    1. Initial program 58.9

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

      \[\leadsto \color{blue}{1 \cdot x - \left(0.3333333333333333703407674875052180141211 \cdot {x}^{3} + 5.5511151231257827021181583404541015625 \cdot 10^{-17} \cdot {x}^{4}\right)}\]
    3. Simplified0.6

      \[\leadsto \color{blue}{x \cdot \left(1 - 0.3333333333333333703407674875052180141211 \cdot \left(x \cdot x\right)\right) - \left(5.5511151231257827021181583404541015625 \cdot 10^{-17} \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;-2 \cdot x \le -306416.6377200472052209079265594482421875:\\ \;\;\;\;\frac{\frac{\frac{2}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{e^{-2 \cdot x} + 1}} - 1\\ \mathbf{elif}\;-2 \cdot x \le 4.236193905385104490052934015503760534216 \cdot 10^{-7}:\\ \;\;\;\;x \cdot \left(1 - \left(x \cdot x\right) \cdot 0.3333333333333333703407674875052180141211\right) - \left(5.5511151231257827021181583404541015625 \cdot 10^{-17} \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{2}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{\sqrt{e^{-2 \cdot x} + 1}}}}{\sqrt{e^{-2 \cdot x} + 1}} - 1\\ \end{array}\]

Reproduce

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