\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + \sqrt{\left|\frac{z}{t}\right|} \cdot {\left(\sqrt{\left|\frac{z}{t}\right|}\right)}^{3}double f(double x, double y, double z, double t) {
double r498922 = x;
double r498923 = r498922 * r498922;
double r498924 = y;
double r498925 = r498924 * r498924;
double r498926 = r498923 / r498925;
double r498927 = z;
double r498928 = r498927 * r498927;
double r498929 = t;
double r498930 = r498929 * r498929;
double r498931 = r498928 / r498930;
double r498932 = r498926 + r498931;
return r498932;
}
double f(double x, double y, double z, double t) {
double r498933 = x;
double r498934 = y;
double r498935 = r498933 / r498934;
double r498936 = r498935 * r498935;
double r498937 = z;
double r498938 = t;
double r498939 = r498937 / r498938;
double r498940 = fabs(r498939);
double r498941 = sqrt(r498940);
double r498942 = 3.0;
double r498943 = pow(r498941, r498942);
double r498944 = r498941 * r498943;
double r498945 = r498936 + r498944;
return r498945;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 33.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.6 |
Initial program 33.4
rmApplied times-frac19.1
rmApplied add-sqr-sqrt19.1
Simplified19.1
Simplified0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*l*0.5
Simplified0.6
Final simplification0.6
herbie shell --seed 2019298
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:precision binary64
:herbie-target
(+ (pow (/ x y) 2) (pow (/ z t) 2))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))