\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
double f(double x, double y, double z, double t, double a, double b) {
double r430400 = x;
double r430401 = y;
double r430402 = r430400 + r430401;
double r430403 = z;
double r430404 = r430402 + r430403;
double r430405 = t;
double r430406 = log(r430405);
double r430407 = r430403 * r430406;
double r430408 = r430404 - r430407;
double r430409 = a;
double r430410 = 0.5;
double r430411 = r430409 - r430410;
double r430412 = b;
double r430413 = r430411 * r430412;
double r430414 = r430408 + r430413;
return r430414;
}
double f(double x, double y, double z, double t, double a, double b) {
double r430415 = x;
double r430416 = y;
double r430417 = r430415 + r430416;
double r430418 = z;
double r430419 = r430417 + r430418;
double r430420 = t;
double r430421 = log(r430420);
double r430422 = r430418 * r430421;
double r430423 = r430419 - r430422;
double r430424 = a;
double r430425 = 0.5;
double r430426 = r430424 - r430425;
double r430427 = b;
double r430428 = r430426 * r430427;
double r430429 = r430423 + r430428;
return r430429;
}




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.3 |
| Herbie | 0.1 |
Initial program 0.1
Final simplification0.1
herbie shell --seed 2020021
(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)))