x \cdot x - \left(y \cdot 4.0\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 5.86519200437255 \cdot 10^{+302}:\\
\;\;\;\;\mathsf{fma}\left(x, x, \left(\left(-4.0\right) \cdot y\right) \cdot \left(z \cdot z - t\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, x, \left(z - \sqrt{t}\right) \cdot \left(\left(\sqrt{t} + z\right) \cdot \left(\left(-4.0\right) \cdot y\right)\right)\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r29558449 = x;
double r29558450 = r29558449 * r29558449;
double r29558451 = y;
double r29558452 = 4.0;
double r29558453 = r29558451 * r29558452;
double r29558454 = z;
double r29558455 = r29558454 * r29558454;
double r29558456 = t;
double r29558457 = r29558455 - r29558456;
double r29558458 = r29558453 * r29558457;
double r29558459 = r29558450 - r29558458;
return r29558459;
}
double f(double x, double y, double z, double t) {
double r29558460 = z;
double r29558461 = r29558460 * r29558460;
double r29558462 = 5.86519200437255e+302;
bool r29558463 = r29558461 <= r29558462;
double r29558464 = x;
double r29558465 = 4.0;
double r29558466 = -r29558465;
double r29558467 = y;
double r29558468 = r29558466 * r29558467;
double r29558469 = t;
double r29558470 = r29558461 - r29558469;
double r29558471 = r29558468 * r29558470;
double r29558472 = fma(r29558464, r29558464, r29558471);
double r29558473 = sqrt(r29558469);
double r29558474 = r29558460 - r29558473;
double r29558475 = r29558473 + r29558460;
double r29558476 = r29558475 * r29558468;
double r29558477 = r29558474 * r29558476;
double r29558478 = fma(r29558464, r29558464, r29558477);
double r29558479 = r29558463 ? r29558472 : r29558478;
return r29558479;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.0 |
|---|---|
| Target | 6.0 |
| Herbie | 3.1 |
if (* z z) < 5.86519200437255e+302Initial program 0.1
rmApplied fma-neg0.1
if 5.86519200437255e+302 < (* z z) Initial program 61.8
rmApplied fma-neg61.8
rmApplied add-sqr-sqrt63.0
Applied difference-of-squares63.0
Applied associate-*r*31.2
Final simplification3.1
herbie shell --seed 2019165 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:herbie-target
(- (* x x) (* 4.0 (* y (- (* z z) t))))
(- (* x x) (* (* y 4.0) (- (* z z) t))))