Average Error: 2.1 → 2.2
Time: 23.1s
Precision: 64
\[x + \left(y - x\right) \cdot \frac{z}{t}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.259739101522575668784251679852767179672 \cdot 10^{-239}:\\ \;\;\;\;x + \frac{z}{t} \cdot \left(y - x\right)\\ \mathbf{elif}\;x \le 6.335866332063525055695365870190246743303 \cdot 10^{-193}:\\ \;\;\;\;\frac{\left(y - x\right) \cdot z}{t} + x\\ \mathbf{else}:\\ \;\;\;\;x + \frac{z}{t} \cdot \left(y - x\right)\\ \end{array}\]
x + \left(y - x\right) \cdot \frac{z}{t}
\begin{array}{l}
\mathbf{if}\;x \le -1.259739101522575668784251679852767179672 \cdot 10^{-239}:\\
\;\;\;\;x + \frac{z}{t} \cdot \left(y - x\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t) {
        double r28787527 = x;
        double r28787528 = y;
        double r28787529 = r28787528 - r28787527;
        double r28787530 = z;
        double r28787531 = t;
        double r28787532 = r28787530 / r28787531;
        double r28787533 = r28787529 * r28787532;
        double r28787534 = r28787527 + r28787533;
        return r28787534;
}

double f(double x, double y, double z, double t) {
        double r28787535 = x;
        double r28787536 = -1.2597391015225757e-239;
        bool r28787537 = r28787535 <= r28787536;
        double r28787538 = z;
        double r28787539 = t;
        double r28787540 = r28787538 / r28787539;
        double r28787541 = y;
        double r28787542 = r28787541 - r28787535;
        double r28787543 = r28787540 * r28787542;
        double r28787544 = r28787535 + r28787543;
        double r28787545 = 6.335866332063525e-193;
        bool r28787546 = r28787535 <= r28787545;
        double r28787547 = r28787542 * r28787538;
        double r28787548 = r28787547 / r28787539;
        double r28787549 = r28787548 + r28787535;
        double r28787550 = r28787546 ? r28787549 : r28787544;
        double r28787551 = r28787537 ? r28787544 : r28787550;
        return r28787551;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original2.1
Target2.3
Herbie2.2
\[\begin{array}{l} \mathbf{if}\;\left(y - x\right) \cdot \frac{z}{t} \lt -1013646692435.88671875:\\ \;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\ \mathbf{elif}\;\left(y - x\right) \cdot \frac{z}{t} \lt -0.0:\\ \;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -1.2597391015225757e-239 or 6.335866332063525e-193 < x

    1. Initial program 1.5

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

    if -1.2597391015225757e-239 < x < 6.335866332063525e-193

    1. Initial program 5.6

      \[x + \left(y - x\right) \cdot \frac{z}{t}\]
    2. Using strategy rm
    3. Applied associate-*r/6.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.259739101522575668784251679852767179672 \cdot 10^{-239}:\\ \;\;\;\;x + \frac{z}{t} \cdot \left(y - x\right)\\ \mathbf{elif}\;x \le 6.335866332063525055695365870190246743303 \cdot 10^{-193}:\\ \;\;\;\;\frac{\left(y - x\right) \cdot z}{t} + x\\ \mathbf{else}:\\ \;\;\;\;x + \frac{z}{t} \cdot \left(y - x\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019170 
(FPCore (x y z t)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"

  :herbie-target
  (if (< (* (- y x) (/ z t)) -1013646692435.8867) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))

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