double code(double x, double y, double z) {
return ((double) (((double) (x * y)) / ((double) (((double) (z * z)) * ((double) (z + 1.0))))));
}
double code(double x, double y, double z) {
double VAR;
if ((((double) (x * y)) <= -3.311109352139864e+18)) {
VAR = ((double) (((double) (((double) (x / z)) * ((double) (((double) cbrt(1.0)) / ((double) (z / ((double) cbrt(1.0)))))))) * ((double) (y * ((double) (((double) cbrt(1.0)) / ((double) (z + 1.0))))))));
} else {
double VAR_1;
if ((((double) (x * y)) <= 3.016946665275098e+105)) {
VAR_1 = ((double) (1.0 / ((double) (((double) (z * ((double) (z + 1.0)))) / ((double) (y * ((double) (x / z))))))));
} else {
VAR_1 = ((double) (((double) (x / z)) * ((double) (((double) (y / ((double) (z + 1.0)))) / z))));
}
VAR = VAR_1;
}
return VAR;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.2 |
|---|---|
| Target | 4.0 |
| Herbie | 3.0 |
if (* x y) < -3311109352139864100Initial program 19.1
rmApplied clear-num19.2
Simplified5.0
rmApplied add-cube-cbrt5.0
Applied times-frac5.0
Simplified4.9
Simplified4.9
if -3311109352139864100 < (* x y) < 3.0169466652750978e105Initial program 12.1
rmApplied clear-num12.2
Simplified6.5
rmApplied frac-times2.5
if 3.0169466652750978e105 < (* x y) Initial program 26.4
rmApplied clear-num26.5
Simplified3.6
rmApplied associate-*l/2.7
Applied associate-/r/2.8
Simplified2.5
Final simplification3.0
herbie shell --seed 2020191
(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.0 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1.0))))