x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;\frac{z}{t} \le -9.751289687433676250581456072609145368556 \cdot 10^{284}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{elif}\;\frac{z}{t} \le 7.022184320531330190117920916895505481512 \cdot 10^{268}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{t} + x\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r25128670 = x;
double r25128671 = y;
double r25128672 = r25128671 - r25128670;
double r25128673 = z;
double r25128674 = t;
double r25128675 = r25128673 / r25128674;
double r25128676 = r25128672 * r25128675;
double r25128677 = r25128670 + r25128676;
return r25128677;
}
double f(double x, double y, double z, double t) {
double r25128678 = z;
double r25128679 = t;
double r25128680 = r25128678 / r25128679;
double r25128681 = -9.751289687433676e+284;
bool r25128682 = r25128680 <= r25128681;
double r25128683 = x;
double r25128684 = y;
double r25128685 = r25128684 - r25128683;
double r25128686 = r25128685 * r25128678;
double r25128687 = r25128686 / r25128679;
double r25128688 = r25128683 + r25128687;
double r25128689 = 7.02218432053133e+268;
bool r25128690 = r25128680 <= r25128689;
double r25128691 = r25128685 * r25128680;
double r25128692 = r25128691 + r25128683;
double r25128693 = r25128690 ? r25128692 : r25128688;
double r25128694 = r25128682 ? r25128688 : r25128693;
return r25128694;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.1 |
| Herbie | 0.7 |
if (/ z t) < -9.751289687433676e+284 or 7.02218432053133e+268 < (/ z t) Initial program 40.0
rmApplied associate-*r/0.3
if -9.751289687433676e+284 < (/ z t) < 7.02218432053133e+268Initial program 0.7
Final simplification0.7
herbie shell --seed 2019192
(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))))