x \cdot x - \left(y \cdot 4.0\right) \cdot \left(z \cdot z - t\right)
\mathsf{fma}\left(y \cdot t, 4.0, x \cdot x - z \cdot \left(\left(4.0 \cdot y\right) \cdot z\right)\right)double f(double x, double y, double z, double t) {
double r21830306 = x;
double r21830307 = r21830306 * r21830306;
double r21830308 = y;
double r21830309 = 4.0;
double r21830310 = r21830308 * r21830309;
double r21830311 = z;
double r21830312 = r21830311 * r21830311;
double r21830313 = t;
double r21830314 = r21830312 - r21830313;
double r21830315 = r21830310 * r21830314;
double r21830316 = r21830307 - r21830315;
return r21830316;
}
double f(double x, double y, double z, double t) {
double r21830317 = y;
double r21830318 = t;
double r21830319 = r21830317 * r21830318;
double r21830320 = 4.0;
double r21830321 = x;
double r21830322 = r21830321 * r21830321;
double r21830323 = z;
double r21830324 = r21830320 * r21830317;
double r21830325 = r21830324 * r21830323;
double r21830326 = r21830323 * r21830325;
double r21830327 = r21830322 - r21830326;
double r21830328 = fma(r21830319, r21830320, r21830327);
return r21830328;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 5.5 |
|---|---|
| Target | 5.5 |
| Herbie | 0.1 |
Initial program 5.5
Taylor expanded around inf 5.5
Simplified0.1
Final simplification0.1
herbie shell --seed 2019162 +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))))