\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{x}{y} \cdot \frac{x}{y}\right)double f(double x, double y, double z, double t) {
double r10719445 = x;
double r10719446 = r10719445 * r10719445;
double r10719447 = y;
double r10719448 = r10719447 * r10719447;
double r10719449 = r10719446 / r10719448;
double r10719450 = z;
double r10719451 = r10719450 * r10719450;
double r10719452 = t;
double r10719453 = r10719452 * r10719452;
double r10719454 = r10719451 / r10719453;
double r10719455 = r10719449 + r10719454;
return r10719455;
}
double f(double x, double y, double z, double t) {
double r10719456 = z;
double r10719457 = t;
double r10719458 = r10719456 / r10719457;
double r10719459 = x;
double r10719460 = y;
double r10719461 = r10719459 / r10719460;
double r10719462 = r10719461 * r10719461;
double r10719463 = fma(r10719458, r10719458, r10719462);
return r10719463;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 32.5 |
|---|---|
| Target | 0.4 |
| Herbie | 0.4 |
Initial program 32.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:herbie-target
(+ (pow (/ x y) 2) (pow (/ z t) 2))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))