\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 r25949940 = x;
double r25949941 = r25949940 * r25949940;
double r25949942 = y;
double r25949943 = r25949942 * r25949942;
double r25949944 = r25949941 / r25949943;
double r25949945 = z;
double r25949946 = r25949945 * r25949945;
double r25949947 = t;
double r25949948 = r25949947 * r25949947;
double r25949949 = r25949946 / r25949948;
double r25949950 = r25949944 + r25949949;
return r25949950;
}
double f(double x, double y, double z, double t) {
double r25949951 = z;
double r25949952 = t;
double r25949953 = r25949951 / r25949952;
double r25949954 = x;
double r25949955 = y;
double r25949956 = r25949954 / r25949955;
double r25949957 = r25949956 * r25949956;
double r25949958 = fma(r25949953, r25949953, r25949957);
return r25949958;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 33.7 |
|---|---|
| Target | 0.4 |
| Herbie | 0.4 |
Initial program 33.7
Simplified0.4
Final simplification0.4
herbie shell --seed 2019169 +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.0) (pow (/ z t) 2.0))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))