x \cdot x - \left(y \cdot 4.0\right) \cdot \left(z \cdot z - t\right)
x \cdot x - \left(z \cdot \left(\left(y \cdot 4.0\right) \cdot z\right) + \left(y \cdot 4.0\right) \cdot \left(-t\right)\right)
double f(double x, double y, double z, double t) {
double r31791594 = x;
double r31791595 = r31791594 * r31791594;
double r31791596 = y;
double r31791597 = 4.0;
double r31791598 = r31791596 * r31791597;
double r31791599 = z;
double r31791600 = r31791599 * r31791599;
double r31791601 = t;
double r31791602 = r31791600 - r31791601;
double r31791603 = r31791598 * r31791602;
double r31791604 = r31791595 - r31791603;
return r31791604;
}
double f(double x, double y, double z, double t) {
double r31791605 = x;
double r31791606 = r31791605 * r31791605;
double r31791607 = z;
double r31791608 = y;
double r31791609 = 4.0;
double r31791610 = r31791608 * r31791609;
double r31791611 = r31791610 * r31791607;
double r31791612 = r31791607 * r31791611;
double r31791613 = t;
double r31791614 = -r31791613;
double r31791615 = r31791610 * r31791614;
double r31791616 = r31791612 + r31791615;
double r31791617 = r31791606 - r31791616;
return r31791617;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.4 |
|---|---|
| Target | 5.4 |
| Herbie | 0.1 |
Initial program 5.4
rmApplied sub-neg5.4
Applied distribute-lft-in5.4
rmApplied associate-*r*0.1
Final simplification0.1
herbie shell --seed 2019163
(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))))