\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}{\left(\left|\frac{x}{y}\right|\right)}^{\frac{3}{2}} \cdot \sqrt{\left|\frac{x}{y}\right|} + \frac{z}{t} \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r888073 = x;
double r888074 = r888073 * r888073;
double r888075 = y;
double r888076 = r888075 * r888075;
double r888077 = r888074 / r888076;
double r888078 = z;
double r888079 = r888078 * r888078;
double r888080 = t;
double r888081 = r888080 * r888080;
double r888082 = r888079 / r888081;
double r888083 = r888077 + r888082;
return r888083;
}
double f(double x, double y, double z, double t) {
double r888084 = x;
double r888085 = y;
double r888086 = r888084 / r888085;
double r888087 = fabs(r888086);
double r888088 = 1.5;
double r888089 = pow(r888087, r888088);
double r888090 = sqrt(r888087);
double r888091 = r888089 * r888090;
double r888092 = z;
double r888093 = t;
double r888094 = r888092 / r888093;
double r888095 = r888094 * r888094;
double r888096 = r888091 + r888095;
return r888096;
}




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.7
Simplified19.7
rmApplied times-frac0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Simplified0.6
rmApplied pow1/20.6
Applied pow-pow0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020025
(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))))