\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + \left(\frac{z}{t} \cdot \left(\left(\sqrt[3]{\frac{z}{t}} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{\frac{1}{t}}\right)\right) \cdot \sqrt[3]{\frac{z}{t}}double f(double x, double y, double z, double t) {
double r585916 = x;
double r585917 = r585916 * r585916;
double r585918 = y;
double r585919 = r585918 * r585918;
double r585920 = r585917 / r585919;
double r585921 = z;
double r585922 = r585921 * r585921;
double r585923 = t;
double r585924 = r585923 * r585923;
double r585925 = r585922 / r585924;
double r585926 = r585920 + r585925;
return r585926;
}
double f(double x, double y, double z, double t) {
double r585927 = x;
double r585928 = y;
double r585929 = r585927 / r585928;
double r585930 = r585929 * r585929;
double r585931 = z;
double r585932 = t;
double r585933 = r585931 / r585932;
double r585934 = cbrt(r585933);
double r585935 = cbrt(r585931);
double r585936 = r585934 * r585935;
double r585937 = 1.0;
double r585938 = r585937 / r585932;
double r585939 = cbrt(r585938);
double r585940 = r585936 * r585939;
double r585941 = r585933 * r585940;
double r585942 = r585941 * r585934;
double r585943 = r585930 + r585942;
return r585943;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 34.0 |
|---|---|
| Target | 0.4 |
| Herbie | 0.7 |
Initial program 34.0
rmApplied times-frac19.4
rmApplied times-frac0.4
rmApplied add-cube-cbrt0.8
Applied associate-*r*0.8
rmApplied div-inv0.8
Applied cbrt-prod0.7
Applied associate-*r*0.7
Final simplification0.7
herbie shell --seed 2020024
(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))))