\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(\left(\left(\left(\left(x + y\right) + z\right) - \log \left(\sqrt{t}\right) \cdot z\right) - z \cdot \log \left(\sqrt{\sqrt{t}}\right)\right) - z \cdot \log \left(\sqrt{\sqrt{t}}\right)\right) + \left(a - 0.5\right) \cdot bdouble f(double x, double y, double z, double t, double a, double b) {
double r300084 = x;
double r300085 = y;
double r300086 = r300084 + r300085;
double r300087 = z;
double r300088 = r300086 + r300087;
double r300089 = t;
double r300090 = log(r300089);
double r300091 = r300087 * r300090;
double r300092 = r300088 - r300091;
double r300093 = a;
double r300094 = 0.5;
double r300095 = r300093 - r300094;
double r300096 = b;
double r300097 = r300095 * r300096;
double r300098 = r300092 + r300097;
return r300098;
}
double f(double x, double y, double z, double t, double a, double b) {
double r300099 = x;
double r300100 = y;
double r300101 = r300099 + r300100;
double r300102 = z;
double r300103 = r300101 + r300102;
double r300104 = t;
double r300105 = sqrt(r300104);
double r300106 = log(r300105);
double r300107 = r300106 * r300102;
double r300108 = r300103 - r300107;
double r300109 = sqrt(r300105);
double r300110 = log(r300109);
double r300111 = r300102 * r300110;
double r300112 = r300108 - r300111;
double r300113 = r300112 - r300111;
double r300114 = a;
double r300115 = 0.5;
double r300116 = r300114 - r300115;
double r300117 = b;
double r300118 = r300116 * r300117;
double r300119 = r300113 + r300118;
return r300119;
}




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
rmApplied add-sqr-sqrt0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Applied associate--r+0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied sqrt-prod0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Applied associate--r+0.1
Final simplification0.1
herbie shell --seed 2019305
(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)))