Average Error: 29.5 → 0.1
Time: 36.3s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -7470.879892531777841213624924421310424805:\\ \;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \mathsf{fma}\left(\frac{1}{x \cdot x}, 1, \frac{3}{x}\right)\right)\\ \mathbf{elif}\;x \le 6872.825457982198713580146431922912597656:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \frac{\sqrt[3]{x}}{x + 1}, \left(-\sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\frac{x + 1}{x - 1}}, \sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}, \sqrt[3]{\frac{x + 1}{x - 1}} \cdot \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \mathsf{fma}\left(\frac{1}{x \cdot x}, 1, \frac{3}{x}\right)\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -7470.879892531777841213624924421310424805:\\
\;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \mathsf{fma}\left(\frac{1}{x \cdot x}, 1, \frac{3}{x}\right)\right)\\

\mathbf{elif}\;x \le 6872.825457982198713580146431922912597656:\\
\;\;\;\;\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \frac{\sqrt[3]{x}}{x + 1}, \left(-\sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\frac{x + 1}{x - 1}}, \sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}, \sqrt[3]{\frac{x + 1}{x - 1}} \cdot \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \mathsf{fma}\left(\frac{1}{x \cdot x}, 1, \frac{3}{x}\right)\right)\\

\end{array}
double f(double x) {
        double r5997498 = x;
        double r5997499 = 1.0;
        double r5997500 = r5997498 + r5997499;
        double r5997501 = r5997498 / r5997500;
        double r5997502 = r5997498 - r5997499;
        double r5997503 = r5997500 / r5997502;
        double r5997504 = r5997501 - r5997503;
        return r5997504;
}

double f(double x) {
        double r5997505 = x;
        double r5997506 = -7470.879892531778;
        bool r5997507 = r5997505 <= r5997506;
        double r5997508 = 3.0;
        double r5997509 = r5997508 / r5997505;
        double r5997510 = 1.0;
        double r5997511 = r5997505 * r5997505;
        double r5997512 = r5997510 / r5997511;
        double r5997513 = 1.0;
        double r5997514 = fma(r5997512, r5997513, r5997509);
        double r5997515 = fma(r5997509, r5997512, r5997514);
        double r5997516 = -r5997515;
        double r5997517 = 6872.825457982199;
        bool r5997518 = r5997505 <= r5997517;
        double r5997519 = cbrt(r5997505);
        double r5997520 = r5997519 * r5997519;
        double r5997521 = r5997505 + r5997513;
        double r5997522 = r5997519 / r5997521;
        double r5997523 = r5997505 - r5997513;
        double r5997524 = r5997521 / r5997523;
        double r5997525 = cbrt(r5997524);
        double r5997526 = -r5997525;
        double r5997527 = r5997525 * r5997525;
        double r5997528 = r5997526 * r5997527;
        double r5997529 = fma(r5997520, r5997522, r5997528);
        double r5997530 = r5997525 * r5997527;
        double r5997531 = fma(r5997526, r5997527, r5997530);
        double r5997532 = r5997529 + r5997531;
        double r5997533 = r5997518 ? r5997532 : r5997516;
        double r5997534 = r5997507 ? r5997516 : r5997533;
        return r5997534;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -7470.879892531778 or 6872.825457982199 < x

    1. Initial program 59.3

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Taylor expanded around inf 0.4

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

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

    if -7470.879892531778 < x < 6872.825457982199

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \sqrt[3]{\frac{x + 1}{x - 1}}}\]
    4. Applied *-un-lft-identity0.1

      \[\leadsto \frac{x}{\color{blue}{1 \cdot \left(x + 1\right)}} - \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\]
    5. Applied add-cube-cbrt0.2

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}{1 \cdot \left(x + 1\right)} - \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\]
    6. Applied times-frac0.2

      \[\leadsto \color{blue}{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1} \cdot \frac{\sqrt[3]{x}}{x + 1}} - \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\]
    7. Applied prod-diff0.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -7470.879892531777841213624924421310424805:\\ \;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \mathsf{fma}\left(\frac{1}{x \cdot x}, 1, \frac{3}{x}\right)\right)\\ \mathbf{elif}\;x \le 6872.825457982198713580146431922912597656:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \frac{\sqrt[3]{x}}{x + 1}, \left(-\sqrt[3]{\frac{x + 1}{x - 1}}\right) \cdot \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\frac{x + 1}{x - 1}}, \sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}, \sqrt[3]{\frac{x + 1}{x - 1}} \cdot \left(\sqrt[3]{\frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x + 1}{x - 1}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \mathsf{fma}\left(\frac{1}{x \cdot x}, 1, \frac{3}{x}\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019170 +o rules:numerics
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))