\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\sqrt[3]{\frac{x}{y}} \cdot \left(\frac{x}{y} \cdot \left(\left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{1}{y}}\right) \cdot \sqrt[3]{x}\right)\right) + \frac{z}{t} \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r26786173 = x;
double r26786174 = r26786173 * r26786173;
double r26786175 = y;
double r26786176 = r26786175 * r26786175;
double r26786177 = r26786174 / r26786176;
double r26786178 = z;
double r26786179 = r26786178 * r26786178;
double r26786180 = t;
double r26786181 = r26786180 * r26786180;
double r26786182 = r26786179 / r26786181;
double r26786183 = r26786177 + r26786182;
return r26786183;
}
double f(double x, double y, double z, double t) {
double r26786184 = x;
double r26786185 = y;
double r26786186 = r26786184 / r26786185;
double r26786187 = cbrt(r26786186);
double r26786188 = 1.0;
double r26786189 = r26786188 / r26786185;
double r26786190 = cbrt(r26786189);
double r26786191 = r26786187 * r26786190;
double r26786192 = cbrt(r26786184);
double r26786193 = r26786191 * r26786192;
double r26786194 = r26786186 * r26786193;
double r26786195 = r26786187 * r26786194;
double r26786196 = z;
double r26786197 = t;
double r26786198 = r26786196 / r26786197;
double r26786199 = r26786198 * r26786198;
double r26786200 = r26786195 + r26786199;
return r26786200;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 32.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.7 |
Initial program 32.3
Simplified0.4
rmApplied add-cube-cbrt0.8
Applied associate-*r*0.8
rmApplied div-inv0.8
Applied cbrt-prod0.7
Applied associate-*l*0.7
Final simplification0.7
herbie shell --seed 2019162
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:herbie-target
(+ (pow (/ x y) 2) (pow (/ z t) 2))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))