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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r498507 = x;
        double r498508 = y;
        double r498509 = z;
        double r498510 = t;
        double r498511 = r498509 - r498510;
        double r498512 = r498508 * r498511;
        double r498513 = a;
        double r498514 = r498509 - r498513;
        double r498515 = r498512 / r498514;
        double r498516 = r498507 + r498515;
        return r498516;
}

double f(double x, double y, double z, double t, double a) {
        double r498517 = z;
        double r498518 = t;
        double r498519 = r498517 - r498518;
        double r498520 = y;
        double r498521 = r498519 * r498520;
        double r498522 = a;
        double r498523 = r498517 - r498522;
        double r498524 = r498521 / r498523;
        double r498525 = -inf.0;
        bool r498526 = r498524 <= r498525;
        double r498527 = 2.497378485732866e+230;
        bool r498528 = r498524 <= r498527;
        double r498529 = !r498528;
        bool r498530 = r498526 || r498529;
        double r498531 = x;
        double r498532 = r498523 / r498519;
        double r498533 = r498520 / r498532;
        double r498534 = r498531 + r498533;
        double r498535 = r498524 + r498531;
        double r498536 = r498530 ? r498534 : r498535;
        return r498536;
}

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

Original10.5
Target1.2
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 2.497378485732866e+230 < (/ (* y (- z t)) (- z a))

    1. Initial program 57.3

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

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

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

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

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

    1. Initial program 0.2

      \[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{\left(z - t\right) \cdot y}{z - a} = -\infty \lor \neg \left(\frac{\left(z - t\right) \cdot y}{z - a} \le 2.497378485732866022141275700496591943343 \cdot 10^{230}\right):\\ \;\;\;\;x + \frac{y}{\frac{z - a}{z - t}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(z - t\right) \cdot y}{z - a} + x\\ \end{array}\]

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"

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

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