x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\left(x \cdot x - z \cdot \left(z \cdot \left(y \cdot 4\right)\right)\right) - \left(-t\right) \cdot \left(y \cdot 4\right)
double f(double x, double y, double z, double t) {
double r670215 = x;
double r670216 = r670215 * r670215;
double r670217 = y;
double r670218 = 4.0;
double r670219 = r670217 * r670218;
double r670220 = z;
double r670221 = r670220 * r670220;
double r670222 = t;
double r670223 = r670221 - r670222;
double r670224 = r670219 * r670223;
double r670225 = r670216 - r670224;
return r670225;
}
double f(double x, double y, double z, double t) {
double r670226 = x;
double r670227 = r670226 * r670226;
double r670228 = z;
double r670229 = y;
double r670230 = 4.0;
double r670231 = r670229 * r670230;
double r670232 = r670228 * r670231;
double r670233 = r670228 * r670232;
double r670234 = r670227 - r670233;
double r670235 = t;
double r670236 = -r670235;
double r670237 = r670236 * r670231;
double r670238 = r670234 - r670237;
return r670238;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 6.1 |
| Herbie | 0.1 |
Initial program 6.2
rmApplied sub-neg6.2
Applied distribute-rgt-in6.2
Applied associate--r+6.2
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2020018
(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))))