\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(x + y\right) + \left(\left(\left(z - \log \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot z\right) - \log \left(\sqrt[3]{t}\right) \cdot z\right) + \left(a - 0.5\right) \cdot b\right)double f(double x, double y, double z, double t, double a, double b) {
double r396225 = x;
double r396226 = y;
double r396227 = r396225 + r396226;
double r396228 = z;
double r396229 = r396227 + r396228;
double r396230 = t;
double r396231 = log(r396230);
double r396232 = r396228 * r396231;
double r396233 = r396229 - r396232;
double r396234 = a;
double r396235 = 0.5;
double r396236 = r396234 - r396235;
double r396237 = b;
double r396238 = r396236 * r396237;
double r396239 = r396233 + r396238;
return r396239;
}
double f(double x, double y, double z, double t, double a, double b) {
double r396240 = x;
double r396241 = y;
double r396242 = r396240 + r396241;
double r396243 = z;
double r396244 = t;
double r396245 = cbrt(r396244);
double r396246 = r396245 * r396245;
double r396247 = log(r396246);
double r396248 = r396247 * r396243;
double r396249 = r396243 - r396248;
double r396250 = log(r396245);
double r396251 = r396250 * r396243;
double r396252 = r396249 - r396251;
double r396253 = a;
double r396254 = 0.5;
double r396255 = r396253 - r396254;
double r396256 = b;
double r396257 = r396255 * r396256;
double r396258 = r396252 + r396257;
double r396259 = r396242 + r396258;
return r396259;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 0.1 |
|---|---|
| Target | 0.4 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied associate--l+0.1
Applied associate-+l+0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied distribute-rgt-in0.1
Applied associate--r+0.1
Final simplification0.1
herbie shell --seed 2020018
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:logBeta from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ (+ (+ x y) (/ (* (- 1 (pow (log t) 2)) z) (+ 1 (log t)))) (* (- a 0.5) b))
(+ (- (+ (+ x y) z) (* z (log t))) (* (- a 0.5) b)))