Average Error: 1.4 → 1.0
Time: 13.1s
Precision: 64
\[x + y \cdot \frac{z - t}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;y \le -186062994224651239424:\\ \;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t} + x\\ \mathbf{elif}\;y \le 1.22452106600687926588900523708060487951 \cdot 10^{-94}:\\ \;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \frac{z - t}{a - t}\\ \end{array}\]
x + y \cdot \frac{z - t}{a - t}
\begin{array}{l}
\mathbf{if}\;y \le -186062994224651239424:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t} + x\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r388559 = x;
        double r388560 = y;
        double r388561 = z;
        double r388562 = t;
        double r388563 = r388561 - r388562;
        double r388564 = a;
        double r388565 = r388564 - r388562;
        double r388566 = r388563 / r388565;
        double r388567 = r388560 * r388566;
        double r388568 = r388559 + r388567;
        return r388568;
}

double f(double x, double y, double z, double t, double a) {
        double r388569 = y;
        double r388570 = -1.8606299422465124e+20;
        bool r388571 = r388569 <= r388570;
        double r388572 = z;
        double r388573 = t;
        double r388574 = r388572 - r388573;
        double r388575 = a;
        double r388576 = r388575 - r388573;
        double r388577 = r388569 / r388576;
        double r388578 = r388574 * r388577;
        double r388579 = x;
        double r388580 = r388578 + r388579;
        double r388581 = 1.2245210660068793e-94;
        bool r388582 = r388569 <= r388581;
        double r388583 = r388569 * r388574;
        double r388584 = r388583 / r388576;
        double r388585 = r388579 + r388584;
        double r388586 = r388574 / r388576;
        double r388587 = r388569 * r388586;
        double r388588 = r388579 + r388587;
        double r388589 = r388582 ? r388585 : r388588;
        double r388590 = r388571 ? r388580 : r388589;
        return r388590;
}

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.4
Target0.4
Herbie1.0
\[\begin{array}{l} \mathbf{if}\;y \lt -8.508084860551241069024247453646278348229 \cdot 10^{-17}:\\ \;\;\;\;x + y \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;y \lt 2.894426862792089097262541964056085749132 \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 3 regimes
  2. if y < -1.8606299422465124e+20

    1. Initial program 0.8

      \[x + y \cdot \frac{z - t}{a - t}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.8

      \[\leadsto x + \color{blue}{\left(1 \cdot y\right)} \cdot \frac{z - t}{a - t}\]
    4. Applied associate-*l*0.8

      \[\leadsto x + \color{blue}{1 \cdot \left(y \cdot \frac{z - t}{a - t}\right)}\]
    5. Simplified3.0

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

    if -1.8606299422465124e+20 < y < 1.2245210660068793e-94

    1. Initial program 2.2

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

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

    if 1.2245210660068793e-94 < y

    1. Initial program 0.5

      \[x + y \cdot \frac{z - t}{a - t}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -186062994224651239424:\\ \;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t} + x\\ \mathbf{elif}\;y \le 1.22452106600687926588900523708060487951 \cdot 10^{-94}:\\ \;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \frac{z - t}{a - t}\\ \end{array}\]

Reproduce

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

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

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