x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;\frac{z}{t} \le -2.080547098596797432317128420294030987216 \cdot 10^{-53}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{elif}\;\frac{z}{t} \le 6.621919932312076046507554334385359162004 \cdot 10^{-309}:\\
\;\;\;\;x + \frac{z \cdot \left(y - x\right)}{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 r38399796 = x;
double r38399797 = y;
double r38399798 = r38399797 - r38399796;
double r38399799 = z;
double r38399800 = t;
double r38399801 = r38399799 / r38399800;
double r38399802 = r38399798 * r38399801;
double r38399803 = r38399796 + r38399802;
return r38399803;
}
double f(double x, double y, double z, double t) {
double r38399804 = z;
double r38399805 = t;
double r38399806 = r38399804 / r38399805;
double r38399807 = -2.0805470985967974e-53;
bool r38399808 = r38399806 <= r38399807;
double r38399809 = x;
double r38399810 = y;
double r38399811 = r38399810 - r38399809;
double r38399812 = r38399811 * r38399806;
double r38399813 = r38399809 + r38399812;
double r38399814 = 6.621919932312076e-309;
bool r38399815 = r38399806 <= r38399814;
double r38399816 = r38399804 * r38399811;
double r38399817 = r38399816 / r38399805;
double r38399818 = r38399809 + r38399817;
double r38399819 = r38399815 ? r38399818 : r38399813;
double r38399820 = r38399808 ? r38399813 : r38399819;
return r38399820;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.2 |
| Herbie | 2.3 |
if (/ z t) < -2.0805470985967974e-53 or 6.621919932312076e-309 < (/ z t) Initial program 2.1
if -2.0805470985967974e-53 < (/ z t) < 6.621919932312076e-309Initial program 1.8
Taylor expanded around 0 2.5
Simplified2.5
Final simplification2.3
herbie shell --seed 2019174
(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))))