\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \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 r701665 = x;
double r701666 = r701665 * r701665;
double r701667 = y;
double r701668 = r701667 * r701667;
double r701669 = r701666 / r701668;
double r701670 = z;
double r701671 = r701670 * r701670;
double r701672 = t;
double r701673 = r701672 * r701672;
double r701674 = r701671 / r701673;
double r701675 = r701669 + r701674;
return r701675;
}
double f(double x, double y, double z, double t) {
double r701676 = x;
double r701677 = y;
double r701678 = r701676 / r701677;
double r701679 = fabs(r701678);
double r701680 = r701679 * r701679;
double r701681 = z;
double r701682 = t;
double r701683 = r701681 / r701682;
double r701684 = fabs(r701683);
double r701685 = sqrt(r701684);
double r701686 = 3.0;
double r701687 = pow(r701685, r701686);
double r701688 = r701685 * r701687;
double r701689 = r701680 + r701688;
return r701689;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 33.9 |
|---|---|
| Target | 0.4 |
| Herbie | 0.6 |
Initial program 33.9
rmApplied add-sqr-sqrt34.0
Simplified33.9
Simplified19.4
rmApplied add-sqr-sqrt19.4
Simplified19.4
Simplified0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*l*0.5
Simplified0.6
Final simplification0.6
herbie shell --seed 2020047
(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))))