\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + \left(\sqrt[3]{\left|\frac{z}{t}\right| \cdot \left|\frac{z}{t}\right|} \cdot \sqrt[3]{\left|\frac{z}{t}\right| \cdot \left|\frac{z}{t}\right|}\right) \cdot \sqrt[3]{\left|\frac{z}{t}\right| \cdot \left|\frac{z}{t}\right|}double f(double x, double y, double z, double t) {
double r622661 = x;
double r622662 = r622661 * r622661;
double r622663 = y;
double r622664 = r622663 * r622663;
double r622665 = r622662 / r622664;
double r622666 = z;
double r622667 = r622666 * r622666;
double r622668 = t;
double r622669 = r622668 * r622668;
double r622670 = r622667 / r622669;
double r622671 = r622665 + r622670;
return r622671;
}
double f(double x, double y, double z, double t) {
double r622672 = x;
double r622673 = y;
double r622674 = r622672 / r622673;
double r622675 = r622674 * r622674;
double r622676 = z;
double r622677 = t;
double r622678 = r622676 / r622677;
double r622679 = fabs(r622678);
double r622680 = r622679 * r622679;
double r622681 = cbrt(r622680);
double r622682 = r622681 * r622681;
double r622683 = r622682 * r622681;
double r622684 = r622675 + r622683;
return r622684;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 33.8 |
|---|---|
| Target | 0.4 |
| Herbie | 0.8 |
Initial program 33.8
rmApplied add-sqr-sqrt33.8
Simplified33.8
Simplified19.0
rmApplied times-frac0.4
rmApplied add-cube-cbrt0.8
Final simplification0.8
herbie shell --seed 2020056
(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))))