Average Error: 21.9 → 7.6
Time: 4.1s
Precision: 64
\[1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\]
\[\begin{array}{l} \mathbf{if}\;y \le -1041138812298367.38 \lor \neg \left(y \le 7.8750576753944721 \cdot 10^{30}\right):\\ \;\;\;\;\mathsf{fma}\left(1, \frac{x}{{y}^{2}} - \frac{x}{y}, x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(y \cdot \left(\left(\sqrt[3]{\frac{1}{{y}^{3} + {1}^{3}}} \cdot \sqrt[3]{y \cdot y + \left(1 \cdot 1 - y \cdot 1\right)}\right) \cdot \sqrt[3]{\frac{1}{y + 1}}\right)\right) \cdot \sqrt[3]{\frac{1}{y + 1}}, x - 1, 1\right)\\ \end{array}\]
1 - \frac{\left(1 - x\right) \cdot y}{y + 1}
\begin{array}{l}
\mathbf{if}\;y \le -1041138812298367.38 \lor \neg \left(y \le 7.8750576753944721 \cdot 10^{30}\right):\\
\;\;\;\;\mathsf{fma}\left(1, \frac{x}{{y}^{2}} - \frac{x}{y}, x\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(y \cdot \left(\left(\sqrt[3]{\frac{1}{{y}^{3} + {1}^{3}}} \cdot \sqrt[3]{y \cdot y + \left(1 \cdot 1 - y \cdot 1\right)}\right) \cdot \sqrt[3]{\frac{1}{y + 1}}\right)\right) \cdot \sqrt[3]{\frac{1}{y + 1}}, x - 1, 1\right)\\

\end{array}
double f(double x, double y) {
        double r696390 = 1.0;
        double r696391 = x;
        double r696392 = r696390 - r696391;
        double r696393 = y;
        double r696394 = r696392 * r696393;
        double r696395 = r696393 + r696390;
        double r696396 = r696394 / r696395;
        double r696397 = r696390 - r696396;
        return r696397;
}

double f(double x, double y) {
        double r696398 = y;
        double r696399 = -1041138812298367.4;
        bool r696400 = r696398 <= r696399;
        double r696401 = 7.875057675394472e+30;
        bool r696402 = r696398 <= r696401;
        double r696403 = !r696402;
        bool r696404 = r696400 || r696403;
        double r696405 = 1.0;
        double r696406 = x;
        double r696407 = 2.0;
        double r696408 = pow(r696398, r696407);
        double r696409 = r696406 / r696408;
        double r696410 = r696406 / r696398;
        double r696411 = r696409 - r696410;
        double r696412 = fma(r696405, r696411, r696406);
        double r696413 = 1.0;
        double r696414 = 3.0;
        double r696415 = pow(r696398, r696414);
        double r696416 = pow(r696405, r696414);
        double r696417 = r696415 + r696416;
        double r696418 = r696413 / r696417;
        double r696419 = cbrt(r696418);
        double r696420 = r696398 * r696398;
        double r696421 = r696405 * r696405;
        double r696422 = r696398 * r696405;
        double r696423 = r696421 - r696422;
        double r696424 = r696420 + r696423;
        double r696425 = cbrt(r696424);
        double r696426 = r696419 * r696425;
        double r696427 = r696398 + r696405;
        double r696428 = r696413 / r696427;
        double r696429 = cbrt(r696428);
        double r696430 = r696426 * r696429;
        double r696431 = r696398 * r696430;
        double r696432 = r696431 * r696429;
        double r696433 = r696406 - r696405;
        double r696434 = fma(r696432, r696433, r696405);
        double r696435 = r696404 ? r696412 : r696434;
        return r696435;
}

Error

Bits error versus x

Bits error versus y

Target

Original21.9
Target0.3
Herbie7.6
\[\begin{array}{l} \mathbf{if}\;y \lt -3693.84827882972468:\\ \;\;\;\;\frac{1}{y} - \left(\frac{x}{y} - x\right)\\ \mathbf{elif}\;y \lt 6799310503.41891003:\\ \;\;\;\;1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{y} - \left(\frac{x}{y} - x\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -1041138812298367.4 or 7.875057675394472e+30 < y

    1. Initial program 46.3

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\]
    2. Simplified28.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{y + 1}, x - 1, 1\right)}\]
    3. Using strategy rm
    4. Applied div-inv29.0

      \[\leadsto \mathsf{fma}\left(\color{blue}{y \cdot \frac{1}{y + 1}}, x - 1, 1\right)\]
    5. Taylor expanded around inf 14.8

      \[\leadsto \color{blue}{\left(x + 1 \cdot \frac{x}{{y}^{2}}\right) - 1 \cdot \frac{x}{y}}\]
    6. Simplified14.8

      \[\leadsto \color{blue}{\mathsf{fma}\left(1, \frac{x}{{y}^{2}} - \frac{x}{y}, x\right)}\]

    if -1041138812298367.4 < y < 7.875057675394472e+30

    1. Initial program 1.5

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\]
    2. Simplified1.5

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{y + 1}, x - 1, 1\right)}\]
    3. Using strategy rm
    4. Applied div-inv1.5

      \[\leadsto \mathsf{fma}\left(\color{blue}{y \cdot \frac{1}{y + 1}}, x - 1, 1\right)\]
    5. Using strategy rm
    6. Applied add-cube-cbrt1.6

      \[\leadsto \mathsf{fma}\left(y \cdot \color{blue}{\left(\left(\sqrt[3]{\frac{1}{y + 1}} \cdot \sqrt[3]{\frac{1}{y + 1}}\right) \cdot \sqrt[3]{\frac{1}{y + 1}}\right)}, x - 1, 1\right)\]
    7. Applied associate-*r*1.6

      \[\leadsto \mathsf{fma}\left(\color{blue}{\left(y \cdot \left(\sqrt[3]{\frac{1}{y + 1}} \cdot \sqrt[3]{\frac{1}{y + 1}}\right)\right) \cdot \sqrt[3]{\frac{1}{y + 1}}}, x - 1, 1\right)\]
    8. Using strategy rm
    9. Applied flip3-+1.6

      \[\leadsto \mathsf{fma}\left(\left(y \cdot \left(\sqrt[3]{\frac{1}{\color{blue}{\frac{{y}^{3} + {1}^{3}}{y \cdot y + \left(1 \cdot 1 - y \cdot 1\right)}}}} \cdot \sqrt[3]{\frac{1}{y + 1}}\right)\right) \cdot \sqrt[3]{\frac{1}{y + 1}}, x - 1, 1\right)\]
    10. Applied associate-/r/1.6

      \[\leadsto \mathsf{fma}\left(\left(y \cdot \left(\sqrt[3]{\color{blue}{\frac{1}{{y}^{3} + {1}^{3}} \cdot \left(y \cdot y + \left(1 \cdot 1 - y \cdot 1\right)\right)}} \cdot \sqrt[3]{\frac{1}{y + 1}}\right)\right) \cdot \sqrt[3]{\frac{1}{y + 1}}, x - 1, 1\right)\]
    11. Applied cbrt-prod1.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1041138812298367.38 \lor \neg \left(y \le 7.8750576753944721 \cdot 10^{30}\right):\\ \;\;\;\;\mathsf{fma}\left(1, \frac{x}{{y}^{2}} - \frac{x}{y}, x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(y \cdot \left(\left(\sqrt[3]{\frac{1}{{y}^{3} + {1}^{3}}} \cdot \sqrt[3]{y \cdot y + \left(1 \cdot 1 - y \cdot 1\right)}\right) \cdot \sqrt[3]{\frac{1}{y + 1}}\right)\right) \cdot \sqrt[3]{\frac{1}{y + 1}}, x - 1, 1\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020064 +o rules:numerics
(FPCore (x y)
  :name "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, D"
  :precision binary64

  :herbie-target
  (if (< y -3693.8482788297247) (- (/ 1 y) (- (/ x y) x)) (if (< y 6799310503.41891) (- 1 (/ (* (- 1 x) y) (+ y 1))) (- (/ 1 y) (- (/ x y) x))))

  (- 1 (/ (* (- 1 x) y) (+ y 1))))