\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + \sqrt{\left|\frac{z}{t}\right|} \cdot {\left(\left|\frac{z}{t}\right|\right)}^{\frac{3}{2}}double f(double x, double y, double z, double t) {
double r656687 = x;
double r656688 = r656687 * r656687;
double r656689 = y;
double r656690 = r656689 * r656689;
double r656691 = r656688 / r656690;
double r656692 = z;
double r656693 = r656692 * r656692;
double r656694 = t;
double r656695 = r656694 * r656694;
double r656696 = r656693 / r656695;
double r656697 = r656691 + r656696;
return r656697;
}
double f(double x, double y, double z, double t) {
double r656698 = x;
double r656699 = y;
double r656700 = r656698 / r656699;
double r656701 = r656700 * r656700;
double r656702 = z;
double r656703 = t;
double r656704 = r656702 / r656703;
double r656705 = fabs(r656704);
double r656706 = sqrt(r656705);
double r656707 = 1.5;
double r656708 = pow(r656705, r656707);
double r656709 = r656706 * r656708;
double r656710 = r656701 + r656709;
return r656710;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 33.6 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 33.6
rmApplied add-sqr-sqrt33.7
Simplified33.6
Simplified18.4
rmApplied times-frac0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*l*0.5
Simplified0.6
rmApplied pow1/20.6
Applied pow-pow0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020018
(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))))