\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left(\left|\sqrt[3]{\left|\frac{x}{y}\right|}\right| \cdot \sqrt{\sqrt[3]{\left|\frac{x}{y}\right|}}\right) \cdot {\left(\sqrt{\left|\frac{x}{y}\right|}\right)}^{3} + \frac{z}{t} \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r641455 = x;
double r641456 = r641455 * r641455;
double r641457 = y;
double r641458 = r641457 * r641457;
double r641459 = r641456 / r641458;
double r641460 = z;
double r641461 = r641460 * r641460;
double r641462 = t;
double r641463 = r641462 * r641462;
double r641464 = r641461 / r641463;
double r641465 = r641459 + r641464;
return r641465;
}
double f(double x, double y, double z, double t) {
double r641466 = x;
double r641467 = y;
double r641468 = r641466 / r641467;
double r641469 = fabs(r641468);
double r641470 = cbrt(r641469);
double r641471 = fabs(r641470);
double r641472 = sqrt(r641470);
double r641473 = r641471 * r641472;
double r641474 = sqrt(r641469);
double r641475 = 3.0;
double r641476 = pow(r641474, r641475);
double r641477 = r641473 * r641476;
double r641478 = z;
double r641479 = t;
double r641480 = r641478 / r641479;
double r641481 = r641480 * r641480;
double r641482 = r641477 + r641481;
return r641482;
}




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.7 |
Initial program 33.8
rmApplied times-frac19.4
rmApplied add-sqr-sqrt19.4
Simplified19.4
Simplified0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*l*0.5
Simplified0.6
rmApplied add-cube-cbrt0.7
Applied sqrt-prod0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2020045
(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))))