\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\sqrt{\mathsf{hypot}\left(\frac{z}{t}, \frac{x}{y}\right)} \cdot {\left(\mathsf{hypot}\left(\frac{z}{t}, \frac{x}{y}\right)\right)}^{\frac{3}{2}}double f(double x, double y, double z, double t) {
double r582510 = x;
double r582511 = r582510 * r582510;
double r582512 = y;
double r582513 = r582512 * r582512;
double r582514 = r582511 / r582513;
double r582515 = z;
double r582516 = r582515 * r582515;
double r582517 = t;
double r582518 = r582517 * r582517;
double r582519 = r582516 / r582518;
double r582520 = r582514 + r582519;
return r582520;
}
double f(double x, double y, double z, double t) {
double r582521 = z;
double r582522 = t;
double r582523 = r582521 / r582522;
double r582524 = x;
double r582525 = y;
double r582526 = r582524 / r582525;
double r582527 = hypot(r582523, r582526);
double r582528 = sqrt(r582527);
double r582529 = 1.5;
double r582530 = pow(r582527, r582529);
double r582531 = r582528 * r582530;
return r582531;
}




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.5 |
Initial program 33.8
Simplified19.8
rmApplied add-sqr-sqrt19.8
Simplified19.8
Simplified0.4
rmApplied add-sqr-sqrt0.6
Applied associate-*l*0.6
Simplified0.8
rmApplied pow1/20.8
Applied pow-pow0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020062 +o rules:numerics
(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))))