x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
x \cdot x - \left(4 \cdot \left(z \cdot \left(z \cdot y\right)\right) + \left(-4 \cdot \left(t \cdot y\right)\right)\right)
double f(double x, double y, double z, double t) {
double r388650 = x;
double r388651 = r388650 * r388650;
double r388652 = y;
double r388653 = 4.0;
double r388654 = r388652 * r388653;
double r388655 = z;
double r388656 = r388655 * r388655;
double r388657 = t;
double r388658 = r388656 - r388657;
double r388659 = r388654 * r388658;
double r388660 = r388651 - r388659;
return r388660;
}
double f(double x, double y, double z, double t) {
double r388661 = x;
double r388662 = r388661 * r388661;
double r388663 = 4.0;
double r388664 = z;
double r388665 = y;
double r388666 = r388664 * r388665;
double r388667 = r388664 * r388666;
double r388668 = r388663 * r388667;
double r388669 = t;
double r388670 = r388669 * r388665;
double r388671 = r388663 * r388670;
double r388672 = -r388671;
double r388673 = r388668 + r388672;
double r388674 = r388662 - r388673;
return r388674;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.3 |
|---|---|
| Target | 6.3 |
| Herbie | 0.1 |
Initial program 6.3
rmApplied sub-neg6.3
Applied distribute-lft-in6.3
Simplified6.3
Simplified6.3
rmApplied unpow26.3
Applied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019326 +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))))