\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}}{z} \cdot \frac{y}{z + 1}\right)double f(double x, double y, double z) {
double r309420 = x;
double r309421 = y;
double r309422 = r309420 * r309421;
double r309423 = z;
double r309424 = r309423 * r309423;
double r309425 = 1.0;
double r309426 = r309423 + r309425;
double r309427 = r309424 * r309426;
double r309428 = r309422 / r309427;
return r309428;
}
double f(double x, double y, double z) {
double r309429 = x;
double r309430 = cbrt(r309429);
double r309431 = r309430 * r309430;
double r309432 = z;
double r309433 = r309431 / r309432;
double r309434 = cbrt(r309431);
double r309435 = cbrt(r309430);
double r309436 = r309434 * r309435;
double r309437 = r309436 / r309432;
double r309438 = y;
double r309439 = 1.0;
double r309440 = r309432 + r309439;
double r309441 = r309438 / r309440;
double r309442 = r309437 * r309441;
double r309443 = r309433 * r309442;
return r309443;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.0 |
|---|---|
| Target | 4.1 |
| Herbie | 1.3 |
Initial program 15.0
rmApplied times-frac11.0
rmApplied add-cube-cbrt11.4
Applied times-frac6.6
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.3
Applied cbrt-prod1.3
Final simplification1.3
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< z 249.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))