\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 r685977 = x;
double r685978 = r685977 * r685977;
double r685979 = y;
double r685980 = r685979 * r685979;
double r685981 = r685978 / r685980;
double r685982 = z;
double r685983 = r685982 * r685982;
double r685984 = t;
double r685985 = r685984 * r685984;
double r685986 = r685983 / r685985;
double r685987 = r685981 + r685986;
return r685987;
}
double f(double x, double y, double z, double t) {
double r685988 = x;
double r685989 = y;
double r685990 = r685988 / r685989;
double r685991 = r685990 * r685990;
double r685992 = cbrt(r685991);
double r685993 = r685992 * r685992;
double r685994 = r685993 * r685992;
double r685995 = z;
double r685996 = t;
double r685997 = r685995 / r685996;
double r685998 = r685997 * r685997;
double r685999 = r685994 + r685998;
return r685999;
}




Bits error versus x




Bits error versus y




Bits error versus z




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