\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(\left(\log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) \cdot 2\right) \cdot x + x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot 2 + \log \left(\sqrt[3]{y}\right)\right)\right) + \left(z \cdot \log 1 - \left(1 \cdot \left(z \cdot y\right) + \frac{1}{2} \cdot \frac{z \cdot {y}^{2}}{{1}^{2}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r2248 = x;
double r2249 = y;
double r2250 = log(r2249);
double r2251 = r2248 * r2250;
double r2252 = z;
double r2253 = 1.0;
double r2254 = r2253 - r2249;
double r2255 = log(r2254);
double r2256 = r2252 * r2255;
double r2257 = r2251 + r2256;
double r2258 = t;
double r2259 = r2257 - r2258;
return r2259;
}
double f(double x, double y, double z, double t) {
double r2260 = y;
double r2261 = cbrt(r2260);
double r2262 = r2261 * r2261;
double r2263 = cbrt(r2262);
double r2264 = log(r2263);
double r2265 = 2.0;
double r2266 = r2264 * r2265;
double r2267 = x;
double r2268 = r2266 * r2267;
double r2269 = cbrt(r2261);
double r2270 = log(r2269);
double r2271 = r2270 * r2265;
double r2272 = log(r2261);
double r2273 = r2271 + r2272;
double r2274 = r2267 * r2273;
double r2275 = r2268 + r2274;
double r2276 = z;
double r2277 = 1.0;
double r2278 = log(r2277);
double r2279 = r2276 * r2278;
double r2280 = r2276 * r2260;
double r2281 = r2277 * r2280;
double r2282 = 0.5;
double r2283 = pow(r2260, r2265);
double r2284 = r2276 * r2283;
double r2285 = pow(r2277, r2265);
double r2286 = r2284 / r2285;
double r2287 = r2282 * r2286;
double r2288 = r2281 + r2287;
double r2289 = r2279 - r2288;
double r2290 = r2275 + r2289;
double r2291 = t;
double r2292 = r2290 - r2291;
return r2292;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.6
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.4
Applied log-prod0.4
Applied distribute-rgt-in0.4
Applied distribute-rgt-in0.4
Applied associate-+l+0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020025
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(- (* (- z) (+ (+ (* 0.5 (* y y)) y) (* (/ 0.3333333333333333 (* 1 (* 1 1))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1 y)))) t))