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 z\right) \cdot \left(-z\right)\right)double f(double x, double y, double z, double t) {
double r682804 = x;
double r682805 = r682804 * r682804;
double r682806 = y;
double r682807 = 4.0;
double r682808 = r682806 * r682807;
double r682809 = z;
double r682810 = r682809 * r682809;
double r682811 = t;
double r682812 = r682810 - r682811;
double r682813 = r682808 * r682812;
double r682814 = r682805 - r682813;
return r682814;
}
double f(double x, double y, double z, double t) {
double r682815 = x;
double r682816 = y;
double r682817 = 4.0;
double r682818 = r682816 * r682817;
double r682819 = t;
double r682820 = r682818 * r682819;
double r682821 = z;
double r682822 = r682818 * r682821;
double r682823 = -r682821;
double r682824 = r682822 * r682823;
double r682825 = r682820 + r682824;
double r682826 = fma(r682815, r682815, r682825);
return r682826;
}




Bits error versus x




Bits error versus y




Bits error versus z




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