\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(\left(x - \left(2 \cdot \log \left(\sqrt[3]{y}\right)\right) \cdot \left(y + 0.5\right)\right) - \log \left(\sqrt[3]{y}\right) \cdot \left(y + 0.5\right)\right) + \left(y - z\right)double f(double x, double y, double z) {
double r250978 = x;
double r250979 = y;
double r250980 = 0.5;
double r250981 = r250979 + r250980;
double r250982 = log(r250979);
double r250983 = r250981 * r250982;
double r250984 = r250978 - r250983;
double r250985 = r250984 + r250979;
double r250986 = z;
double r250987 = r250985 - r250986;
return r250987;
}
double f(double x, double y, double z) {
double r250988 = x;
double r250989 = 2.0;
double r250990 = y;
double r250991 = cbrt(r250990);
double r250992 = log(r250991);
double r250993 = r250989 * r250992;
double r250994 = 0.5;
double r250995 = r250990 + r250994;
double r250996 = r250993 * r250995;
double r250997 = r250988 - r250996;
double r250998 = r250992 * r250995;
double r250999 = r250997 - r250998;
double r251000 = z;
double r251001 = r250990 - r251000;
double r251002 = r250999 + r251001;
return r251002;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 0.1
rmApplied associate--l+0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.2
Applied distribute-rgt-in0.2
Applied associate--r+0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))