x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 5.2999359490719286 \cdot 10^{294}:\\
\;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \left(1 \cdot \left(z \cdot z - t\right)\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 r726826 = x;
double r726827 = r726826 * r726826;
double r726828 = y;
double r726829 = 4.0;
double r726830 = r726828 * r726829;
double r726831 = z;
double r726832 = r726831 * r726831;
double r726833 = t;
double r726834 = r726832 - r726833;
double r726835 = r726830 * r726834;
double r726836 = r726827 - r726835;
return r726836;
}
double f(double x, double y, double z, double t) {
double r726837 = z;
double r726838 = r726837 * r726837;
double r726839 = 5.299935949071929e+294;
bool r726840 = r726838 <= r726839;
double r726841 = x;
double r726842 = r726841 * r726841;
double r726843 = y;
double r726844 = 4.0;
double r726845 = r726843 * r726844;
double r726846 = 1.0;
double r726847 = t;
double r726848 = r726838 - r726847;
double r726849 = r726846 * r726848;
double r726850 = r726845 * r726849;
double r726851 = r726842 - r726850;
double r726852 = sqrt(r726847);
double r726853 = r726837 + r726852;
double r726854 = r726845 * r726853;
double r726855 = r726837 - r726852;
double r726856 = r726854 * r726855;
double r726857 = r726842 - r726856;
double r726858 = r726840 ? r726851 : r726857;
return r726858;
}




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) < 5.299935949071929e+294Initial program 0.1
rmApplied *-un-lft-identity0.1
if 5.299935949071929e+294 < (* z z) Initial program 58.7
rmApplied add-sqr-sqrt61.6
Applied difference-of-squares61.6
Applied associate-*r*31.0
Final simplification3.3
herbie shell --seed 2020027
(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))))