x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\mathsf{fma}\left(x, x, \left(\left(y \cdot 4\right) \cdot t + \left(\left(y \cdot 4\right) \cdot z\right) \cdot \left(-z\right)\right) + \left(y \cdot 4\right) \cdot 0\right)double f(double x, double y, double z, double t) {
double r715930 = x;
double r715931 = r715930 * r715930;
double r715932 = y;
double r715933 = 4.0;
double r715934 = r715932 * r715933;
double r715935 = z;
double r715936 = r715935 * r715935;
double r715937 = t;
double r715938 = r715936 - r715937;
double r715939 = r715934 * r715938;
double r715940 = r715931 - r715939;
return r715940;
}
double f(double x, double y, double z, double t) {
double r715941 = x;
double r715942 = y;
double r715943 = 4.0;
double r715944 = r715942 * r715943;
double r715945 = t;
double r715946 = r715944 * r715945;
double r715947 = z;
double r715948 = r715944 * r715947;
double r715949 = -r715947;
double r715950 = r715948 * r715949;
double r715951 = r715946 + r715950;
double r715952 = 0.0;
double r715953 = r715944 * r715952;
double r715954 = r715951 + r715953;
double r715955 = fma(r715941, r715941, r715954);
return r715955;
}




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 add-sqr-sqrt35.3
Applied prod-diff35.3
Applied distribute-lft-in35.3
Simplified6.1
rmApplied sub-neg6.1
Applied distribute-lft-in6.1
rmApplied distribute-rgt-neg-in6.1
Applied associate-*r*6.1
Taylor expanded around 0 0.1
Final simplification0.1
herbie shell --seed 2020027 +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))))