Average Error: 11.0 → 0.4
Time: 18.4s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
\[\begin{array}{l} \mathbf{if}\;\frac{y \cdot \left(z - t\right)}{z - a} = -\infty \lor \neg \left(\frac{y \cdot \left(z - t\right)}{z - a} \le 1.335594091829946822915292839999816461094 \cdot 10^{257}\right):\\ \;\;\;\;x + y \cdot \frac{z - t}{z - a}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot \left(z - t\right)}{z - a}\\ \end{array}\]
x + \frac{y \cdot \left(z - t\right)}{z - a}
\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{z - a} = -\infty \lor \neg \left(\frac{y \cdot \left(z - t\right)}{z - a} \le 1.335594091829946822915292839999816461094 \cdot 10^{257}\right):\\
\;\;\;\;x + y \cdot \frac{z - t}{z - a}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r1671472 = x;
        double r1671473 = y;
        double r1671474 = z;
        double r1671475 = t;
        double r1671476 = r1671474 - r1671475;
        double r1671477 = r1671473 * r1671476;
        double r1671478 = a;
        double r1671479 = r1671474 - r1671478;
        double r1671480 = r1671477 / r1671479;
        double r1671481 = r1671472 + r1671480;
        return r1671481;
}

double f(double x, double y, double z, double t, double a) {
        double r1671482 = y;
        double r1671483 = z;
        double r1671484 = t;
        double r1671485 = r1671483 - r1671484;
        double r1671486 = r1671482 * r1671485;
        double r1671487 = a;
        double r1671488 = r1671483 - r1671487;
        double r1671489 = r1671486 / r1671488;
        double r1671490 = -inf.0;
        bool r1671491 = r1671489 <= r1671490;
        double r1671492 = 1.3355940918299468e+257;
        bool r1671493 = r1671489 <= r1671492;
        double r1671494 = !r1671493;
        bool r1671495 = r1671491 || r1671494;
        double r1671496 = x;
        double r1671497 = r1671485 / r1671488;
        double r1671498 = r1671482 * r1671497;
        double r1671499 = r1671496 + r1671498;
        double r1671500 = r1671496 + r1671489;
        double r1671501 = r1671495 ? r1671499 : r1671500;
        return r1671501;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original11.0
Target1.3
Herbie0.4
\[x + \frac{y}{\frac{z - a}{z - t}}\]

Derivation

  1. Split input into 2 regimes
  2. if (/ (* y (- z t)) (- z a)) < -inf.0 or 1.3355940918299468e+257 < (/ (* y (- z t)) (- z a))

    1. Initial program 60.3

      \[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity60.3

      \[\leadsto x + \frac{y \cdot \left(z - t\right)}{\color{blue}{1 \cdot \left(z - a\right)}}\]
    4. Applied times-frac0.8

      \[\leadsto x + \color{blue}{\frac{y}{1} \cdot \frac{z - t}{z - a}}\]
    5. Simplified0.8

      \[\leadsto x + \color{blue}{y} \cdot \frac{z - t}{z - a}\]

    if -inf.0 < (/ (* y (- z t)) (- z a)) < 1.3355940918299468e+257

    1. Initial program 0.3

      \[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{y \cdot \left(z - t\right)}{z - a} = -\infty \lor \neg \left(\frac{y \cdot \left(z - t\right)}{z - a} \le 1.335594091829946822915292839999816461094 \cdot 10^{257}\right):\\ \;\;\;\;x + y \cdot \frac{z - t}{z - a}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot \left(z - t\right)}{z - a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019235 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
  :precision binary64

  :herbie-target
  (+ x (/ y (/ (- z a) (- z t))))

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