x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
x \cdot x - \left(4 \cdot \left({z}^{\left(\frac{2}{2}\right)} \cdot \left(z \cdot y\right)\right) + \left(y \cdot 4\right) \cdot \left(-t\right)\right)double f(double x, double y, double z, double t) {
double r668380 = x;
double r668381 = r668380 * r668380;
double r668382 = y;
double r668383 = 4.0;
double r668384 = r668382 * r668383;
double r668385 = z;
double r668386 = r668385 * r668385;
double r668387 = t;
double r668388 = r668386 - r668387;
double r668389 = r668384 * r668388;
double r668390 = r668381 - r668389;
return r668390;
}
double f(double x, double y, double z, double t) {
double r668391 = x;
double r668392 = r668391 * r668391;
double r668393 = 4.0;
double r668394 = z;
double r668395 = 2.0;
double r668396 = r668395 / r668395;
double r668397 = pow(r668394, r668396);
double r668398 = y;
double r668399 = r668394 * r668398;
double r668400 = r668397 * r668399;
double r668401 = r668393 * r668400;
double r668402 = r668398 * r668393;
double r668403 = t;
double r668404 = -r668403;
double r668405 = r668402 * r668404;
double r668406 = r668401 + r668405;
double r668407 = r668392 - r668406;
return r668407;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 6.2 |
| Herbie | 0.1 |
Initial program 6.2
rmApplied sub-neg6.2
Applied distribute-lft-in6.2
Simplified6.2
rmApplied sqr-pow6.2
Applied associate-*l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020046 +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))))