\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\mathsf{fma}\left(1 - \log t, z, \mathsf{fma}\left(a - 0.5, b, x\right)\right) + ydouble f(double x, double y, double z, double t, double a, double b) {
double r434286 = x;
double r434287 = y;
double r434288 = r434286 + r434287;
double r434289 = z;
double r434290 = r434288 + r434289;
double r434291 = t;
double r434292 = log(r434291);
double r434293 = r434289 * r434292;
double r434294 = r434290 - r434293;
double r434295 = a;
double r434296 = 0.5;
double r434297 = r434295 - r434296;
double r434298 = b;
double r434299 = r434297 * r434298;
double r434300 = r434294 + r434299;
return r434300;
}
double f(double x, double y, double z, double t, double a, double b) {
double r434301 = 1.0;
double r434302 = t;
double r434303 = log(r434302);
double r434304 = r434301 - r434303;
double r434305 = z;
double r434306 = a;
double r434307 = 0.5;
double r434308 = r434306 - r434307;
double r434309 = b;
double r434310 = x;
double r434311 = fma(r434308, r434309, r434310);
double r434312 = fma(r434304, r434305, r434311);
double r434313 = y;
double r434314 = r434312 + r434313;
return r434314;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 0.1 |
|---|---|
| Target | 0.4 |
| Herbie | 0.1 |
Initial program 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020047 +o rules:numerics
(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)))