\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}{\left({\left(\sqrt{\mathsf{hypot}\left(\frac{x}{y}, \frac{z}{t}\right)}\right)}^{4}\right)}^{\frac{1}{4}} \cdot \left({\left({\left(\mathsf{hypot}\left(\frac{x}{y}, \frac{z}{t}\right)\right)}^{2}\right)}^{\frac{1}{4}} \cdot \mathsf{hypot}\left(\frac{x}{y}, \frac{z}{t}\right)\right)double f(double x, double y, double z, double t) {
double r401232 = x;
double r401233 = r401232 * r401232;
double r401234 = y;
double r401235 = r401234 * r401234;
double r401236 = r401233 / r401235;
double r401237 = z;
double r401238 = r401237 * r401237;
double r401239 = t;
double r401240 = r401239 * r401239;
double r401241 = r401238 / r401240;
double r401242 = r401236 + r401241;
return r401242;
}
double f(double x, double y, double z, double t) {
double r401243 = x;
double r401244 = y;
double r401245 = r401243 / r401244;
double r401246 = z;
double r401247 = t;
double r401248 = r401246 / r401247;
double r401249 = hypot(r401245, r401248);
double r401250 = sqrt(r401249);
double r401251 = 4.0;
double r401252 = pow(r401250, r401251);
double r401253 = 0.25;
double r401254 = pow(r401252, r401253);
double r401255 = 2.0;
double r401256 = pow(r401249, r401255);
double r401257 = pow(r401256, r401253);
double r401258 = r401257 * r401249;
double r401259 = r401254 * r401258;
return r401259;
}




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.6 |
Initial program 33.4
Simplified19.1
rmApplied add-sqr-sqrt19.2
Simplified19.1
Simplified0.4
rmApplied add-sqr-sqrt0.6
rmApplied pow10.6
Applied sqrt-pow10.6
Applied pow10.6
Applied sqrt-pow10.6
Applied pow-prod-down0.4
Simplified0.6
rmApplied sqr-pow0.6
Applied associate-*r*0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019347 +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))))