x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\mathsf{fma}\left(x, x, \left(\left(\left(-y\right) \cdot z\right) \cdot \left(z \cdot \sqrt[3]{4}\right)\right) \cdot \left(\left(\sqrt[3]{4} \cdot \sqrt[3]{\sqrt[3]{4}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{4}} \cdot \sqrt[3]{\sqrt[3]{4}}\right)\right) + \left(t \cdot y\right) \cdot 4\right)double f(double x, double y, double z, double t) {
double r385772 = x;
double r385773 = r385772 * r385772;
double r385774 = y;
double r385775 = 4.0;
double r385776 = r385774 * r385775;
double r385777 = z;
double r385778 = r385777 * r385777;
double r385779 = t;
double r385780 = r385778 - r385779;
double r385781 = r385776 * r385780;
double r385782 = r385773 - r385781;
return r385782;
}
double f(double x, double y, double z, double t) {
double r385783 = x;
double r385784 = y;
double r385785 = -r385784;
double r385786 = z;
double r385787 = r385785 * r385786;
double r385788 = 4.0;
double r385789 = cbrt(r385788);
double r385790 = r385786 * r385789;
double r385791 = r385787 * r385790;
double r385792 = cbrt(r385789);
double r385793 = r385789 * r385792;
double r385794 = r385792 * r385792;
double r385795 = r385793 * r385794;
double r385796 = r385791 * r385795;
double r385797 = t;
double r385798 = r385797 * r385784;
double r385799 = r385798 * r385788;
double r385800 = r385796 + r385799;
double r385801 = fma(r385783, r385783, r385800);
return r385801;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.0 |
|---|---|
| Target | 6.0 |
| Herbie | 0.2 |
Initial program 6.0
Simplified6.0
Taylor expanded around inf 6.0
Simplified6.0
rmApplied fma-udef6.0
Applied distribute-lft-in6.0
Simplified0.1
Simplified0.1
rmApplied add-cube-cbrt0.4
Applied associate-*l*0.4
Simplified0.4
rmApplied add-cube-cbrt0.2
Applied add-cube-cbrt0.2
Applied swap-sqr0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019174 +o rules:numerics
(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))))