\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\mathsf{fma}\left(a - 0.5, \log t, \left(\log \left(\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}\right) + \left(\log \left(\sqrt[3]{x + y}\right) + \log z\right)\right) - t\right)double f(double x, double y, double z, double t, double a) {
double r217273 = x;
double r217274 = y;
double r217275 = r217273 + r217274;
double r217276 = log(r217275);
double r217277 = z;
double r217278 = log(r217277);
double r217279 = r217276 + r217278;
double r217280 = t;
double r217281 = r217279 - r217280;
double r217282 = a;
double r217283 = 0.5;
double r217284 = r217282 - r217283;
double r217285 = log(r217280);
double r217286 = r217284 * r217285;
double r217287 = r217281 + r217286;
return r217287;
}
double f(double x, double y, double z, double t, double a) {
double r217288 = a;
double r217289 = 0.5;
double r217290 = r217288 - r217289;
double r217291 = t;
double r217292 = log(r217291);
double r217293 = x;
double r217294 = y;
double r217295 = r217293 + r217294;
double r217296 = cbrt(r217295);
double r217297 = r217296 * r217296;
double r217298 = log(r217297);
double r217299 = log(r217296);
double r217300 = z;
double r217301 = log(r217300);
double r217302 = r217299 + r217301;
double r217303 = r217298 + r217302;
double r217304 = r217303 - r217291;
double r217305 = fma(r217290, r217292, r217304);
return r217305;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 0.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied log-prod0.3
Applied associate-+l+0.2
Final simplification0.2
herbie shell --seed 2019235 +o rules:numerics
(FPCore (x y z t a)
:name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(+ (log (+ x y)) (+ (- (log z) t) (* (- a 0.5) (log t))))
(+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))