\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z} \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot \frac{y}{z + 1}\right)} \cdot \sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z} \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot \frac{y}{z + 1}\right)}\right) \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{z}} \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot \frac{y}{z + 1}\right)\right)}double f(double x, double y, double z) {
double r360485 = x;
double r360486 = y;
double r360487 = r360485 * r360486;
double r360488 = z;
double r360489 = r360488 * r360488;
double r360490 = 1.0;
double r360491 = r360488 + r360490;
double r360492 = r360489 * r360491;
double r360493 = r360487 / r360492;
return r360493;
}
double f(double x, double y, double z) {
double r360494 = x;
double r360495 = cbrt(r360494);
double r360496 = r360495 * r360495;
double r360497 = z;
double r360498 = r360496 / r360497;
double r360499 = r360495 / r360497;
double r360500 = y;
double r360501 = 1.0;
double r360502 = r360497 + r360501;
double r360503 = r360500 / r360502;
double r360504 = r360499 * r360503;
double r360505 = r360498 * r360504;
double r360506 = cbrt(r360505);
double r360507 = r360506 * r360506;
double r360508 = cbrt(r360497);
double r360509 = r360508 * r360508;
double r360510 = r360495 / r360509;
double r360511 = r360495 / r360508;
double r360512 = r360511 * r360504;
double r360513 = r360510 * r360512;
double r360514 = cbrt(r360513);
double r360515 = r360507 * r360514;
return r360515;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.6 |
|---|---|
| Target | 4.0 |
| Herbie | 1.4 |
Initial program 14.6
rmApplied times-frac10.9
rmApplied add-cube-cbrt11.2
Applied times-frac6.4
Applied associate-*l*1.2
rmApplied add-cube-cbrt1.4
rmApplied add-cube-cbrt1.4
Applied times-frac1.4
Applied associate-*l*1.4
Final simplification1.4
herbie shell --seed 2020021
(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))))