Average Error: 1.3 → 1.1
Time: 15.8s
Precision: 64
\[x + y \cdot \frac{z - t}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;y \le -3.25568807915397534 \cdot 10^{87} \lor \neg \left(y \le 3.9183521668461886 \cdot 10^{-162}\right):\\ \;\;\;\;x + y \cdot \frac{z - t}{a - t}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\ \end{array}\]
x + y \cdot \frac{z - t}{a - t}
\begin{array}{l}
\mathbf{if}\;y \le -3.25568807915397534 \cdot 10^{87} \lor \neg \left(y \le 3.9183521668461886 \cdot 10^{-162}\right):\\
\;\;\;\;x + y \cdot \frac{z - t}{a - t}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r385240 = x;
        double r385241 = y;
        double r385242 = z;
        double r385243 = t;
        double r385244 = r385242 - r385243;
        double r385245 = a;
        double r385246 = r385245 - r385243;
        double r385247 = r385244 / r385246;
        double r385248 = r385241 * r385247;
        double r385249 = r385240 + r385248;
        return r385249;
}

double f(double x, double y, double z, double t, double a) {
        double r385250 = y;
        double r385251 = -3.2556880791539753e+87;
        bool r385252 = r385250 <= r385251;
        double r385253 = 3.9183521668461886e-162;
        bool r385254 = r385250 <= r385253;
        double r385255 = !r385254;
        bool r385256 = r385252 || r385255;
        double r385257 = x;
        double r385258 = z;
        double r385259 = t;
        double r385260 = r385258 - r385259;
        double r385261 = a;
        double r385262 = r385261 - r385259;
        double r385263 = r385260 / r385262;
        double r385264 = r385250 * r385263;
        double r385265 = r385257 + r385264;
        double r385266 = r385250 * r385260;
        double r385267 = r385266 / r385262;
        double r385268 = r385257 + r385267;
        double r385269 = r385256 ? r385265 : r385268;
        return r385269;
}

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

Original1.3
Target0.4
Herbie1.1
\[\begin{array}{l} \mathbf{if}\;y \lt -8.50808486055124107 \cdot 10^{-17}:\\ \;\;\;\;x + y \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;y \lt 2.8944268627920891 \cdot 10^{-49}:\\ \;\;\;\;x + \left(y \cdot \left(z - t\right)\right) \cdot \frac{1}{a - t}\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \frac{z - t}{a - t}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -3.2556880791539753e+87 or 3.9183521668461886e-162 < y

    1. Initial program 0.8

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

    if -3.2556880791539753e+87 < y < 3.9183521668461886e-162

    1. Initial program 1.8

      \[x + y \cdot \frac{z - t}{a - t}\]
    2. Using strategy rm
    3. Applied associate-*r/1.4

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

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

Reproduce

herbie shell --seed 2019198 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"

  :herbie-target
  (if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1.0 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))

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