\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left(\sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}}\right) \cdot \sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}} + \frac{z}{t} \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r680825 = x;
double r680826 = r680825 * r680825;
double r680827 = y;
double r680828 = r680827 * r680827;
double r680829 = r680826 / r680828;
double r680830 = z;
double r680831 = r680830 * r680830;
double r680832 = t;
double r680833 = r680832 * r680832;
double r680834 = r680831 / r680833;
double r680835 = r680829 + r680834;
return r680835;
}
double f(double x, double y, double z, double t) {
double r680836 = x;
double r680837 = y;
double r680838 = r680836 / r680837;
double r680839 = r680838 * r680838;
double r680840 = cbrt(r680839);
double r680841 = r680840 * r680840;
double r680842 = r680841 * r680840;
double r680843 = z;
double r680844 = t;
double r680845 = r680843 / r680844;
double r680846 = r680845 * r680845;
double r680847 = r680842 + r680846;
return r680847;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 32.6 |
|---|---|
| Target | 0.4 |
| Herbie | 0.8 |
Initial program 32.6
rmApplied times-frac18.4
rmApplied times-frac0.4
rmApplied add-cube-cbrt0.8
Final simplification0.8
herbie shell --seed 2020003
(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))))