x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 6.12322392683654523 \cdot 10^{304}:\\
\;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(\left(z + \sqrt{t}\right) \cdot \left(y \cdot 4\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r699363 = x;
double r699364 = r699363 * r699363;
double r699365 = y;
double r699366 = 4.0;
double r699367 = r699365 * r699366;
double r699368 = z;
double r699369 = r699368 * r699368;
double r699370 = t;
double r699371 = r699369 - r699370;
double r699372 = r699367 * r699371;
double r699373 = r699364 - r699372;
return r699373;
}
double f(double x, double y, double z, double t) {
double r699374 = z;
double r699375 = r699374 * r699374;
double r699376 = 6.123223926836545e+304;
bool r699377 = r699375 <= r699376;
double r699378 = x;
double r699379 = r699378 * r699378;
double r699380 = y;
double r699381 = 4.0;
double r699382 = r699380 * r699381;
double r699383 = t;
double r699384 = r699375 - r699383;
double r699385 = r699382 * r699384;
double r699386 = r699379 - r699385;
double r699387 = sqrt(r699383);
double r699388 = r699374 + r699387;
double r699389 = r699388 * r699382;
double r699390 = r699374 - r699387;
double r699391 = r699389 * r699390;
double r699392 = r699379 - r699391;
double r699393 = r699377 ? r699386 : r699392;
return r699393;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.1 |
|---|---|
| Target | 6.1 |
| Herbie | 3.3 |
if (* z z) < 6.123223926836545e+304Initial program 0.1
if 6.123223926836545e+304 < (* z z) Initial program 62.7
rmApplied flip--64.0
Applied associate-*r/64.0
Simplified64.0
rmApplied clear-num64.0
Simplified62.7
rmApplied add-sqr-sqrt63.3
Applied difference-of-squares63.3
Applied *-un-lft-identity63.3
Applied times-frac63.3
Applied times-frac63.3
Applied add-sqr-sqrt63.3
Applied times-frac63.3
Simplified63.3
Simplified33.7
Final simplification3.3
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:precision binary64
:herbie-target
(- (* x x) (* 4 (* y (- (* z z) t))))
(- (* x x) (* (* y 4) (- (* z z) t))))