\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + {\left(\left|\frac{z}{t}\right|\right)}^{\left(\frac{1}{2} \cdot 3\right)} \cdot \sqrt{\left|\frac{z}{t}\right|}double f(double x, double y, double z, double t) {
double r428167 = x;
double r428168 = r428167 * r428167;
double r428169 = y;
double r428170 = r428169 * r428169;
double r428171 = r428168 / r428170;
double r428172 = z;
double r428173 = r428172 * r428172;
double r428174 = t;
double r428175 = r428174 * r428174;
double r428176 = r428173 / r428175;
double r428177 = r428171 + r428176;
return r428177;
}
double f(double x, double y, double z, double t) {
double r428178 = x;
double r428179 = y;
double r428180 = r428178 / r428179;
double r428181 = r428180 * r428180;
double r428182 = z;
double r428183 = t;
double r428184 = r428182 / r428183;
double r428185 = fabs(r428184);
double r428186 = 0.5;
double r428187 = 3.0;
double r428188 = r428186 * r428187;
double r428189 = pow(r428185, r428188);
double r428190 = sqrt(r428185);
double r428191 = r428189 * r428190;
double r428192 = r428181 + r428191;
return r428192;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 34.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 34.3
rmApplied add-sqr-sqrt34.4
Simplified34.3
Simplified19.1
rmApplied times-frac0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Simplified0.6
rmApplied pow1/20.6
Applied pow-pow0.5
Final simplification0.5
herbie shell --seed 2019291
(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))))