x \cdot x - \left(y \cdot 4.0\right) \cdot \left(z \cdot z - t\right)
\mathsf{fma}\left(y \cdot 4.0, t - z \cdot z, x \cdot x\right)double f(double x, double y, double z, double t) {
double r11968304 = x;
double r11968305 = r11968304 * r11968304;
double r11968306 = y;
double r11968307 = 4.0;
double r11968308 = r11968306 * r11968307;
double r11968309 = z;
double r11968310 = r11968309 * r11968309;
double r11968311 = t;
double r11968312 = r11968310 - r11968311;
double r11968313 = r11968308 * r11968312;
double r11968314 = r11968305 - r11968313;
return r11968314;
}
double f(double x, double y, double z, double t) {
double r11968315 = y;
double r11968316 = 4.0;
double r11968317 = r11968315 * r11968316;
double r11968318 = t;
double r11968319 = z;
double r11968320 = r11968319 * r11968319;
double r11968321 = r11968318 - r11968320;
double r11968322 = x;
double r11968323 = r11968322 * r11968322;
double r11968324 = fma(r11968317, r11968321, r11968323);
return r11968324;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 5.3 |
|---|---|
| Target | 5.2 |
| Herbie | 5.3 |
Initial program 5.3
Simplified5.3
Final simplification5.3
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:herbie-target
(- (* x x) (* 4.0 (* y (- (* z z) t))))
(- (* x x) (* (* y 4.0) (- (* z z) t))))