x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\mathsf{fma}\left(x, x, \left(\left(y \cdot 4\right) \cdot t + \left(\left(y \cdot 4\right) \cdot \left(-z\right)\right) \cdot z\right) + \left(y \cdot 4\right) \cdot 0\right)double f(double x, double y, double z, double t) {
double r672472 = x;
double r672473 = r672472 * r672472;
double r672474 = y;
double r672475 = 4.0;
double r672476 = r672474 * r672475;
double r672477 = z;
double r672478 = r672477 * r672477;
double r672479 = t;
double r672480 = r672478 - r672479;
double r672481 = r672476 * r672480;
double r672482 = r672473 - r672481;
return r672482;
}
double f(double x, double y, double z, double t) {
double r672483 = x;
double r672484 = y;
double r672485 = 4.0;
double r672486 = r672484 * r672485;
double r672487 = t;
double r672488 = r672486 * r672487;
double r672489 = z;
double r672490 = -r672489;
double r672491 = r672486 * r672490;
double r672492 = r672491 * r672489;
double r672493 = r672488 + r672492;
double r672494 = 0.0;
double r672495 = r672486 * r672494;
double r672496 = r672493 + r672495;
double r672497 = fma(r672483, r672483, r672496);
return r672497;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.2 |
|---|---|
| Target | 6.1 |
| Herbie | 0.1 |
Initial program 6.2
Simplified6.2
rmApplied add-sqr-sqrt35.1
Applied prod-diff35.1
Applied distribute-lft-in35.1
Simplified6.2
rmApplied sub-neg6.2
Applied distribute-lft-in6.2
rmApplied distribute-lft-neg-in6.2
Applied associate-*r*6.2
Taylor expanded around 0 0.1
Final simplification0.1
herbie shell --seed 2020018 +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))))