\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left(\sqrt{\mathsf{hypot}\left(\frac{x}{y}, \frac{z}{t}\right)} \cdot \sqrt{\mathsf{hypot}\left(\frac{x}{y}, \frac{z}{t}\right)}\right) \cdot \mathsf{hypot}\left(\frac{x}{y}, \frac{z}{t}\right)double f(double x, double y, double z, double t) {
double r766466 = x;
double r766467 = r766466 * r766466;
double r766468 = y;
double r766469 = r766468 * r766468;
double r766470 = r766467 / r766469;
double r766471 = z;
double r766472 = r766471 * r766471;
double r766473 = t;
double r766474 = r766473 * r766473;
double r766475 = r766472 / r766474;
double r766476 = r766470 + r766475;
return r766476;
}
double f(double x, double y, double z, double t) {
double r766477 = x;
double r766478 = y;
double r766479 = r766477 / r766478;
double r766480 = z;
double r766481 = t;
double r766482 = r766480 / r766481;
double r766483 = hypot(r766479, r766482);
double r766484 = sqrt(r766483);
double r766485 = r766484 * r766484;
double r766486 = r766485 * r766483;
return r766486;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 34.0 |
|---|---|
| Target | 0.4 |
| Herbie | 0.6 |
Initial program 34.0
Simplified19.5
rmApplied add-sqr-sqrt19.5
Simplified19.5
Simplified0.4
rmApplied add-sqr-sqrt0.6
Final simplification0.6
herbie shell --seed 2020043 +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))))