\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}{\left(\sqrt{\left|\frac{x}{y}\right|}\right)}^{3} \cdot \sqrt[3]{{\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 r608589 = x;
double r608590 = r608589 * r608589;
double r608591 = y;
double r608592 = r608591 * r608591;
double r608593 = r608590 / r608592;
double r608594 = z;
double r608595 = r608594 * r608594;
double r608596 = t;
double r608597 = r608596 * r608596;
double r608598 = r608595 / r608597;
double r608599 = r608593 + r608598;
return r608599;
}
double f(double x, double y, double z, double t) {
double r608600 = x;
double r608601 = y;
double r608602 = r608600 / r608601;
double r608603 = fabs(r608602);
double r608604 = sqrt(r608603);
double r608605 = 3.0;
double r608606 = pow(r608604, r608605);
double r608607 = cbrt(r608606);
double r608608 = r608606 * r608607;
double r608609 = z;
double r608610 = t;
double r608611 = r608609 / r608610;
double r608612 = r608611 * r608611;
double r608613 = r608608 + r608612;
return r608613;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 33.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.7 |
Initial program 33.4
rmApplied add-sqr-sqrt33.5
Simplified33.4
Simplified18.7
rmApplied times-frac0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Simplified0.6
rmApplied add-cbrt-cube0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019356
(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))))