Average Error: 16.5 → 8.6
Time: 6.2s
Precision: 64
\[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le -3.407628243643392 \cdot 10^{-225}:\\ \;\;\;\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 0.0:\\ \;\;\;\;x\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 1.5005608759723991 \cdot 10^{291}:\\ \;\;\;\;\frac{\left(t - z\right) \cdot {\left({\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{2}\right)}^{3}}{\frac{a - t}{\sqrt[3]{y}}} + \left(x + y\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\ \end{array}\]
\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}
\begin{array}{l}
\mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\

\mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le -3.407628243643392 \cdot 10^{-225}:\\
\;\;\;\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\\

\mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 0.0:\\
\;\;\;\;x\\

\mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 1.5005608759723991 \cdot 10^{291}:\\
\;\;\;\;\frac{\left(t - z\right) \cdot {\left({\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{2}\right)}^{3}}{\frac{a - t}{\sqrt[3]{y}}} + \left(x + y\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r565350 = x;
        double r565351 = y;
        double r565352 = r565350 + r565351;
        double r565353 = z;
        double r565354 = t;
        double r565355 = r565353 - r565354;
        double r565356 = r565355 * r565351;
        double r565357 = a;
        double r565358 = r565357 - r565354;
        double r565359 = r565356 / r565358;
        double r565360 = r565352 - r565359;
        return r565360;
}

double f(double x, double y, double z, double t, double a) {
        double r565361 = x;
        double r565362 = y;
        double r565363 = r565361 + r565362;
        double r565364 = z;
        double r565365 = t;
        double r565366 = r565364 - r565365;
        double r565367 = r565366 * r565362;
        double r565368 = a;
        double r565369 = r565368 - r565365;
        double r565370 = r565367 / r565369;
        double r565371 = r565363 - r565370;
        double r565372 = -inf.0;
        bool r565373 = r565371 <= r565372;
        double r565374 = r565362 / r565369;
        double r565375 = r565365 - r565364;
        double r565376 = fma(r565374, r565375, r565363);
        double r565377 = -3.407628243643392e-225;
        bool r565378 = r565371 <= r565377;
        double r565379 = 0.0;
        bool r565380 = r565371 <= r565379;
        double r565381 = 1.500560875972399e+291;
        bool r565382 = r565371 <= r565381;
        double r565383 = cbrt(r565362);
        double r565384 = cbrt(r565383);
        double r565385 = 2.0;
        double r565386 = pow(r565384, r565385);
        double r565387 = 3.0;
        double r565388 = pow(r565386, r565387);
        double r565389 = r565375 * r565388;
        double r565390 = r565369 / r565383;
        double r565391 = r565389 / r565390;
        double r565392 = r565391 + r565363;
        double r565393 = r565382 ? r565392 : r565376;
        double r565394 = r565380 ? r565361 : r565393;
        double r565395 = r565378 ? r565371 : r565394;
        double r565396 = r565373 ? r565376 : r565395;
        return r565396;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original16.5
Target8.1
Herbie8.6
\[\begin{array}{l} \mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \lt -1.3664970889390727 \cdot 10^{-7}:\\ \;\;\;\;\left(y + x\right) - \left(\left(z - t\right) \cdot \frac{1}{a - t}\right) \cdot y\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \lt 1.47542934445772333 \cdot 10^{-239}:\\ \;\;\;\;\frac{y \cdot \left(a - z\right) - x \cdot t}{a - t}\\ \mathbf{else}:\\ \;\;\;\;\left(y + x\right) - \left(\left(z - t\right) \cdot \frac{1}{a - t}\right) \cdot y\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if (- (+ x y) (/ (* (- z t) y) (- a t))) < -inf.0 or 1.500560875972399e+291 < (- (+ x y) (/ (* (- z t) y) (- a t)))

    1. Initial program 58.6

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
    2. Simplified24.4

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)}\]

    if -inf.0 < (- (+ x y) (/ (* (- z t) y) (- a t))) < -3.407628243643392e-225

    1. Initial program 1.3

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]

    if -3.407628243643392e-225 < (- (+ x y) (/ (* (- z t) y) (- a t))) < 0.0

    1. Initial program 57.1

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
    2. Simplified57.6

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)}\]
    3. Taylor expanded around 0 35.0

      \[\leadsto \color{blue}{x}\]

    if 0.0 < (- (+ x y) (/ (* (- z t) y) (- a t))) < 1.500560875972399e+291

    1. Initial program 1.3

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
    2. Simplified3.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt3.3

      \[\leadsto \mathsf{fma}\left(\frac{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}}{a - t}, t - z, x + y\right)\]
    5. Applied associate-/l*3.3

      \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\frac{a - t}{\sqrt[3]{y}}}}, t - z, x + y\right)\]
    6. Using strategy rm
    7. Applied add-cube-cbrt3.4

      \[\leadsto \mathsf{fma}\left(\frac{\color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}\right)} \cdot \sqrt[3]{y}}{\frac{a - t}{\sqrt[3]{y}}}, t - z, x + y\right)\]
    8. Applied associate-*l*3.4

      \[\leadsto \mathsf{fma}\left(\frac{\color{blue}{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{y}\right)}}{\frac{a - t}{\sqrt[3]{y}}}, t - z, x + y\right)\]
    9. Simplified3.5

      \[\leadsto \mathsf{fma}\left(\frac{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \color{blue}{{\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{4}}}{\frac{a - t}{\sqrt[3]{y}}}, t - z, x + y\right)\]
    10. Using strategy rm
    11. Applied fma-udef3.5

      \[\leadsto \color{blue}{\frac{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot {\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{4}}{\frac{a - t}{\sqrt[3]{y}}} \cdot \left(t - z\right) + \left(x + y\right)}\]
    12. Simplified1.8

      \[\leadsto \color{blue}{\frac{\left(t - z\right) \cdot {\left({\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{2}\right)}^{3}}{\frac{a - t}{\sqrt[3]{y}}}} + \left(x + y\right)\]
  3. Recombined 4 regimes into one program.
  4. Final simplification8.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le -3.407628243643392 \cdot 10^{-225}:\\ \;\;\;\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 0.0:\\ \;\;\;\;x\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 1.5005608759723991 \cdot 10^{291}:\\ \;\;\;\;\frac{\left(t - z\right) \cdot {\left({\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{2}\right)}^{3}}{\frac{a - t}{\sqrt[3]{y}}} + \left(x + y\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020056 +o rules:numerics
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
  :precision binary64

  :herbie-target
  (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))

  (- (+ x y) (/ (* (- z t) y) (- a t))))