x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;z \le 4.680081952247758434360845558331483175442 \cdot 10^{-308}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\left(y - x\right) \cdot \frac{\sqrt{z}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right) \cdot \frac{\sqrt{z}}{\sqrt[3]{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r1070106 = x;
double r1070107 = y;
double r1070108 = r1070107 - r1070106;
double r1070109 = z;
double r1070110 = t;
double r1070111 = r1070109 / r1070110;
double r1070112 = r1070108 * r1070111;
double r1070113 = r1070106 + r1070112;
return r1070113;
}
double f(double x, double y, double z, double t) {
double r1070114 = z;
double r1070115 = 4.680081952247758e-308;
bool r1070116 = r1070114 <= r1070115;
double r1070117 = x;
double r1070118 = y;
double r1070119 = r1070118 - r1070117;
double r1070120 = t;
double r1070121 = r1070114 / r1070120;
double r1070122 = r1070119 * r1070121;
double r1070123 = r1070117 + r1070122;
double r1070124 = sqrt(r1070114);
double r1070125 = cbrt(r1070120);
double r1070126 = r1070125 * r1070125;
double r1070127 = r1070124 / r1070126;
double r1070128 = r1070119 * r1070127;
double r1070129 = r1070124 / r1070125;
double r1070130 = r1070128 * r1070129;
double r1070131 = r1070117 + r1070130;
double r1070132 = r1070116 ? r1070123 : r1070131;
return r1070132;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.2 |
| Herbie | 1.3 |
if z < 4.680081952247758e-308Initial program 1.5
if 4.680081952247758e-308 < z Initial program 2.3
rmApplied add-cube-cbrt2.8
Applied add-sqr-sqrt2.8
Applied times-frac2.8
Applied associate-*r*1.1
Final simplification1.3
herbie shell --seed 2019303
(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))))