\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(x - \left(\left(y + 0.5\right) \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \left(\left(y + 0.5\right) \cdot \log \left({\left({y}^{\frac{2}{3}}\right)}^{\frac{1}{3}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) - y\right)\right)\right) - zdouble f(double x, double y, double z) {
double r293944 = x;
double r293945 = y;
double r293946 = 0.5;
double r293947 = r293945 + r293946;
double r293948 = log(r293945);
double r293949 = r293947 * r293948;
double r293950 = r293944 - r293949;
double r293951 = r293950 + r293945;
double r293952 = z;
double r293953 = r293951 - r293952;
return r293953;
}
double f(double x, double y, double z) {
double r293954 = x;
double r293955 = y;
double r293956 = 0.5;
double r293957 = r293955 + r293956;
double r293958 = cbrt(r293955);
double r293959 = r293958 * r293958;
double r293960 = log(r293959);
double r293961 = r293957 * r293960;
double r293962 = 0.6666666666666666;
double r293963 = pow(r293955, r293962);
double r293964 = 0.3333333333333333;
double r293965 = pow(r293963, r293964);
double r293966 = cbrt(r293958);
double r293967 = r293965 * r293966;
double r293968 = log(r293967);
double r293969 = r293957 * r293968;
double r293970 = r293969 - r293955;
double r293971 = r293961 + r293970;
double r293972 = r293954 - r293971;
double r293973 = z;
double r293974 = r293972 - r293973;
return r293974;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied associate-+l-0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.2
Applied distribute-lft-in0.2
Applied associate--l+0.1
rmApplied add-cube-cbrt0.1
Applied cbrt-prod0.1
Simplified0.1
rmApplied pow1/30.1
Final simplification0.1
herbie shell --seed 2019304
(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))