\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -5.277016346357952993745277225912104768213 \cdot 10^{-4} \lor \neg \left(a \le 4.889529153193783306974873529274732222518 \cdot 10^{-116}\right):\\
\;\;\;\;\mathsf{fma}\left(\left(t - z\right) \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}, \frac{\sqrt[3]{y}}{\sqrt[3]{a - t}}, x + y\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, y, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r360458 = x;
double r360459 = y;
double r360460 = r360458 + r360459;
double r360461 = z;
double r360462 = t;
double r360463 = r360461 - r360462;
double r360464 = r360463 * r360459;
double r360465 = a;
double r360466 = r360465 - r360462;
double r360467 = r360464 / r360466;
double r360468 = r360460 - r360467;
return r360468;
}
double f(double x, double y, double z, double t, double a) {
double r360469 = a;
double r360470 = -0.0005277016346357953;
bool r360471 = r360469 <= r360470;
double r360472 = 4.8895291531937833e-116;
bool r360473 = r360469 <= r360472;
double r360474 = !r360473;
bool r360475 = r360471 || r360474;
double r360476 = t;
double r360477 = z;
double r360478 = r360476 - r360477;
double r360479 = y;
double r360480 = cbrt(r360479);
double r360481 = r360480 * r360480;
double r360482 = r360469 - r360476;
double r360483 = cbrt(r360482);
double r360484 = r360483 * r360483;
double r360485 = r360481 / r360484;
double r360486 = r360478 * r360485;
double r360487 = r360480 / r360483;
double r360488 = x;
double r360489 = r360488 + r360479;
double r360490 = fma(r360486, r360487, r360489);
double r360491 = r360477 / r360476;
double r360492 = fma(r360491, r360479, r360488);
double r360493 = r360475 ? r360490 : r360492;
return r360493;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 16.0 |
|---|---|
| Target | 8.1 |
| Herbie | 9.3 |
if a < -0.0005277016346357953 or 4.8895291531937833e-116 < a Initial program 14.3
Simplified7.1
rmApplied fma-udef7.1
rmApplied div-inv7.1
Applied associate-*l*7.8
Simplified7.8
rmApplied add-cube-cbrt7.9
Applied add-cube-cbrt7.9
Applied times-frac7.9
Applied associate-*r*7.2
rmApplied fma-def7.2
if -0.0005277016346357953 < a < 4.8895291531937833e-116Initial program 18.7
Simplified17.8
Taylor expanded around inf 14.4
Simplified13.0
Final simplification9.3
herbie shell --seed 2019326 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))