\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + {\left(\left|\frac{z}{t}\right|\right)}^{\frac{3}{2}} \cdot \sqrt{\left|\frac{z}{t}\right|}double f(double x, double y, double z, double t) {
double r514342 = x;
double r514343 = r514342 * r514342;
double r514344 = y;
double r514345 = r514344 * r514344;
double r514346 = r514343 / r514345;
double r514347 = z;
double r514348 = r514347 * r514347;
double r514349 = t;
double r514350 = r514349 * r514349;
double r514351 = r514348 / r514350;
double r514352 = r514346 + r514351;
return r514352;
}
double f(double x, double y, double z, double t) {
double r514353 = x;
double r514354 = y;
double r514355 = r514353 / r514354;
double r514356 = fabs(r514355);
double r514357 = r514356 * r514356;
double r514358 = z;
double r514359 = t;
double r514360 = r514358 / r514359;
double r514361 = fabs(r514360);
double r514362 = 1.5;
double r514363 = pow(r514361, r514362);
double r514364 = sqrt(r514361);
double r514365 = r514363 * r514364;
double r514366 = r514357 + r514365;
return r514366;
}




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.5 |
Initial program 33.7
rmApplied add-sqr-sqrt33.7
Simplified33.7
Simplified18.9
rmApplied add-sqr-sqrt18.9
Simplified18.9
Simplified0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Simplified0.6
rmApplied pow1/20.6
Applied pow-pow0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019199
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:herbie-target
(+ (pow (/ x y) 2.0) (pow (/ z t) 2.0))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))