\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(\mathsf{fma}\left(z, 1 - \log \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right), x + y\right) - z \cdot \log \left({t}^{\frac{1}{3}}\right)\right) + \left(a - 0.5\right) \cdot bdouble f(double x, double y, double z, double t, double a, double b) {
double r352669 = x;
double r352670 = y;
double r352671 = r352669 + r352670;
double r352672 = z;
double r352673 = r352671 + r352672;
double r352674 = t;
double r352675 = log(r352674);
double r352676 = r352672 * r352675;
double r352677 = r352673 - r352676;
double r352678 = a;
double r352679 = 0.5;
double r352680 = r352678 - r352679;
double r352681 = b;
double r352682 = r352680 * r352681;
double r352683 = r352677 + r352682;
return r352683;
}
double f(double x, double y, double z, double t, double a, double b) {
double r352684 = z;
double r352685 = 1.0;
double r352686 = t;
double r352687 = cbrt(r352686);
double r352688 = r352687 * r352687;
double r352689 = log(r352688);
double r352690 = r352685 - r352689;
double r352691 = x;
double r352692 = y;
double r352693 = r352691 + r352692;
double r352694 = fma(r352684, r352690, r352693);
double r352695 = 0.3333333333333333;
double r352696 = pow(r352686, r352695);
double r352697 = log(r352696);
double r352698 = r352684 * r352697;
double r352699 = r352694 - r352698;
double r352700 = a;
double r352701 = 0.5;
double r352702 = r352700 - r352701;
double r352703 = b;
double r352704 = r352702 * r352703;
double r352705 = r352699 + r352704;
return r352705;
}




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.3 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Applied associate--r+0.1
Simplified0.1
rmApplied pow1/30.1
Final simplification0.1
herbie shell --seed 2020062 +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)))