\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left(\left|\frac{x}{y}\right| \cdot \sqrt[3]{{\left(\left|\frac{x}{y}\right|\right)}^{2}}\right) \cdot \sqrt[3]{\left|\frac{x}{y}\right|} + \frac{z}{t} \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r1392664 = x;
double r1392665 = r1392664 * r1392664;
double r1392666 = y;
double r1392667 = r1392666 * r1392666;
double r1392668 = r1392665 / r1392667;
double r1392669 = z;
double r1392670 = r1392669 * r1392669;
double r1392671 = t;
double r1392672 = r1392671 * r1392671;
double r1392673 = r1392670 / r1392672;
double r1392674 = r1392668 + r1392673;
return r1392674;
}
double f(double x, double y, double z, double t) {
double r1392675 = x;
double r1392676 = y;
double r1392677 = r1392675 / r1392676;
double r1392678 = fabs(r1392677);
double r1392679 = 2.0;
double r1392680 = pow(r1392678, r1392679);
double r1392681 = cbrt(r1392680);
double r1392682 = r1392678 * r1392681;
double r1392683 = cbrt(r1392678);
double r1392684 = r1392682 * r1392683;
double r1392685 = z;
double r1392686 = t;
double r1392687 = r1392685 / r1392686;
double r1392688 = r1392687 * r1392687;
double r1392689 = r1392684 + r1392688;
return r1392689;
}




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 times-frac0.4
rmApplied add-cube-cbrt0.8
Applied associate-*r*0.8
rmApplied cbrt-unprod0.6
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))))