x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;\frac{z}{t} = -\infty:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r585115 = x;
double r585116 = y;
double r585117 = r585116 - r585115;
double r585118 = z;
double r585119 = t;
double r585120 = r585118 / r585119;
double r585121 = r585117 * r585120;
double r585122 = r585115 + r585121;
return r585122;
}
double f(double x, double y, double z, double t) {
double r585123 = z;
double r585124 = t;
double r585125 = r585123 / r585124;
double r585126 = -inf.0;
bool r585127 = r585125 <= r585126;
double r585128 = x;
double r585129 = y;
double r585130 = r585129 - r585128;
double r585131 = r585130 * r585123;
double r585132 = r585131 / r585124;
double r585133 = r585128 + r585132;
double r585134 = r585130 * r585125;
double r585135 = r585128 + r585134;
double r585136 = r585127 ? r585133 : r585135;
return r585136;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.0 |
| Herbie | 1.2 |
if (/ z t) < -inf.0Initial program 64.0
rmApplied associate-*r/0.3
if -inf.0 < (/ z t) Initial program 1.2
Final simplification1.2
herbie shell --seed 2020020
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ 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))))