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(y \cdot 4\right) \cdot \left(z + \sqrt{t}\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r701608 = x;
double r701609 = r701608 * r701608;
double r701610 = y;
double r701611 = 4.0;
double r701612 = r701610 * r701611;
double r701613 = z;
double r701614 = r701613 * r701613;
double r701615 = t;
double r701616 = r701614 - r701615;
double r701617 = r701612 * r701616;
double r701618 = r701609 - r701617;
return r701618;
}
double f(double x, double y, double z, double t) {
double r701619 = z;
double r701620 = r701619 * r701619;
double r701621 = 6.123223926836545e+304;
bool r701622 = r701620 <= r701621;
double r701623 = x;
double r701624 = r701623 * r701623;
double r701625 = y;
double r701626 = 4.0;
double r701627 = r701625 * r701626;
double r701628 = t;
double r701629 = r701620 - r701628;
double r701630 = r701627 * r701629;
double r701631 = r701624 - r701630;
double r701632 = sqrt(r701628);
double r701633 = r701619 + r701632;
double r701634 = r701627 * r701633;
double r701635 = r701619 - r701632;
double r701636 = r701634 * r701635;
double r701637 = r701624 - r701636;
double r701638 = r701622 ? r701631 : r701637;
return r701638;
}




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 add-sqr-sqrt63.3
Applied difference-of-squares63.3
Applied associate-*r*33.7
Final simplification3.3
herbie shell --seed 2020047
(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))))