x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 4.012940309661976867141675654509420293463 \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 r563713 = x;
double r563714 = r563713 * r563713;
double r563715 = y;
double r563716 = 4.0;
double r563717 = r563715 * r563716;
double r563718 = z;
double r563719 = r563718 * r563718;
double r563720 = t;
double r563721 = r563719 - r563720;
double r563722 = r563717 * r563721;
double r563723 = r563714 - r563722;
return r563723;
}
double f(double x, double y, double z, double t) {
double r563724 = z;
double r563725 = r563724 * r563724;
double r563726 = 4.012940309661977e+304;
bool r563727 = r563725 <= r563726;
double r563728 = x;
double r563729 = r563728 * r563728;
double r563730 = y;
double r563731 = 4.0;
double r563732 = r563730 * r563731;
double r563733 = t;
double r563734 = r563725 - r563733;
double r563735 = r563732 * r563734;
double r563736 = r563729 - r563735;
double r563737 = sqrt(r563733);
double r563738 = r563724 + r563737;
double r563739 = r563738 * r563732;
double r563740 = r563724 - r563737;
double r563741 = r563739 * r563740;
double r563742 = r563729 - r563741;
double r563743 = r563727 ? r563736 : r563742;
return r563743;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.9 |
|---|---|
| Target | 5.9 |
| Herbie | 3.3 |
if (* z z) < 4.012940309661977e+304Initial program 0.1
if 4.012940309661977e+304 < (* z z) Initial program 62.5
rmApplied add-sqr-sqrt63.4
Applied difference-of-squares63.4
Applied associate-*r*34.3
Simplified34.3
Final simplification3.3
herbie shell --seed 2019212
(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))))