\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{z}{t} \cdot \frac{z}{t} + \left(\left(\sqrt[3]{\frac{x}{y}} \cdot \left(\sqrt[3]{\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}} \cdot \sqrt[3]{\frac{x}{\sqrt[3]{y}}}\right)\right) \cdot \sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}}\right) \cdot \sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}}double f(double x, double y, double z, double t) {
double r32537595 = x;
double r32537596 = r32537595 * r32537595;
double r32537597 = y;
double r32537598 = r32537597 * r32537597;
double r32537599 = r32537596 / r32537598;
double r32537600 = z;
double r32537601 = r32537600 * r32537600;
double r32537602 = t;
double r32537603 = r32537602 * r32537602;
double r32537604 = r32537601 / r32537603;
double r32537605 = r32537599 + r32537604;
return r32537605;
}
double f(double x, double y, double z, double t) {
double r32537606 = z;
double r32537607 = t;
double r32537608 = r32537606 / r32537607;
double r32537609 = r32537608 * r32537608;
double r32537610 = x;
double r32537611 = y;
double r32537612 = r32537610 / r32537611;
double r32537613 = cbrt(r32537612);
double r32537614 = 1.0;
double r32537615 = cbrt(r32537611);
double r32537616 = r32537615 * r32537615;
double r32537617 = r32537614 / r32537616;
double r32537618 = cbrt(r32537617);
double r32537619 = r32537610 / r32537615;
double r32537620 = cbrt(r32537619);
double r32537621 = r32537618 * r32537620;
double r32537622 = r32537613 * r32537621;
double r32537623 = r32537612 * r32537612;
double r32537624 = cbrt(r32537623);
double r32537625 = r32537622 * r32537624;
double r32537626 = r32537625 * r32537624;
double r32537627 = r32537609 + r32537626;
return r32537627;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 34.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.8 |
Initial program 34.3
Simplified0.4
rmApplied add-cube-cbrt0.8
rmApplied cbrt-prod0.8
rmApplied add-cube-cbrt0.8
Applied *-un-lft-identity0.8
Applied times-frac0.8
Applied cbrt-prod0.8
Final simplification0.8
herbie shell --seed 2019165
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:herbie-target
(+ (pow (/ x y) 2.0) (pow (/ z t) 2.0))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))