\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + \left(\sqrt[3]{\frac{z}{t} \cdot \frac{z}{t}} \cdot \sqrt[3]{\frac{z}{t} \cdot \frac{z}{t}}\right) \cdot \sqrt[3]{\frac{z}{t} \cdot \frac{z}{t}}double f(double x, double y, double z, double t) {
double r617084 = x;
double r617085 = r617084 * r617084;
double r617086 = y;
double r617087 = r617086 * r617086;
double r617088 = r617085 / r617087;
double r617089 = z;
double r617090 = r617089 * r617089;
double r617091 = t;
double r617092 = r617091 * r617091;
double r617093 = r617090 / r617092;
double r617094 = r617088 + r617093;
return r617094;
}
double f(double x, double y, double z, double t) {
double r617095 = x;
double r617096 = y;
double r617097 = r617095 / r617096;
double r617098 = r617097 * r617097;
double r617099 = z;
double r617100 = t;
double r617101 = r617099 / r617100;
double r617102 = r617101 * r617101;
double r617103 = cbrt(r617102);
double r617104 = r617103 * r617103;
double r617105 = r617104 * r617103;
double r617106 = r617098 + r617105;
return r617106;
}




Bits error versus x




Bits error versus y




Bits error versus z




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