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 r633710 = x;
double r633711 = r633710 * r633710;
double r633712 = y;
double r633713 = 4.0;
double r633714 = r633712 * r633713;
double r633715 = z;
double r633716 = r633715 * r633715;
double r633717 = t;
double r633718 = r633716 - r633717;
double r633719 = r633714 * r633718;
double r633720 = r633711 - r633719;
return r633720;
}
double f(double x, double y, double z, double t) {
double r633721 = z;
double r633722 = r633721 * r633721;
double r633723 = 6.123223926836545e+304;
bool r633724 = r633722 <= r633723;
double r633725 = x;
double r633726 = r633725 * r633725;
double r633727 = y;
double r633728 = 4.0;
double r633729 = r633727 * r633728;
double r633730 = t;
double r633731 = r633722 - r633730;
double r633732 = r633729 * r633731;
double r633733 = r633726 - r633732;
double r633734 = sqrt(r633730);
double r633735 = r633721 + r633734;
double r633736 = r633729 * r633735;
double r633737 = r633721 - r633734;
double r633738 = r633736 * r633737;
double r633739 = r633726 - r633738;
double r633740 = r633724 ? r633733 : r633739;
return r633740;
}




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))))