x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\mathsf{fma}\left(x, x, \left(y \cdot 4\right) \cdot t + \left(\left(y \cdot 4\right) \cdot \left(-z\right)\right) \cdot z\right)double f(double x, double y, double z, double t) {
double r621864 = x;
double r621865 = r621864 * r621864;
double r621866 = y;
double r621867 = 4.0;
double r621868 = r621866 * r621867;
double r621869 = z;
double r621870 = r621869 * r621869;
double r621871 = t;
double r621872 = r621870 - r621871;
double r621873 = r621868 * r621872;
double r621874 = r621865 - r621873;
return r621874;
}
double f(double x, double y, double z, double t) {
double r621875 = x;
double r621876 = y;
double r621877 = 4.0;
double r621878 = r621876 * r621877;
double r621879 = t;
double r621880 = r621878 * r621879;
double r621881 = z;
double r621882 = -r621881;
double r621883 = r621878 * r621882;
double r621884 = r621883 * r621881;
double r621885 = r621880 + r621884;
double r621886 = fma(r621875, r621875, r621885);
return r621886;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.1 |
|---|---|
| Target | 6.1 |
| Herbie | 0.1 |
Initial program 6.1
Simplified6.1
rmApplied sub-neg6.1
Applied distribute-lft-in6.1
rmApplied distribute-lft-neg-in6.1
Applied associate-*r*0.1
Final simplification0.1
herbie shell --seed 2020057 +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))))