\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\mathsf{fma}\left(\log t, a - 0.5, \frac{{\left(\log \left(x + y\right)\right)}^{3} + {\left(\log z\right)}^{3}}{\mathsf{fma}\left(\log \left(x + y\right), \sqrt[3]{{\left(\log \left(x + y\right) - \log z\right)}^{3}}, \log z \cdot \log z\right)} - t\right)double f(double x, double y, double z, double t, double a) {
double r306169 = x;
double r306170 = y;
double r306171 = r306169 + r306170;
double r306172 = log(r306171);
double r306173 = z;
double r306174 = log(r306173);
double r306175 = r306172 + r306174;
double r306176 = t;
double r306177 = r306175 - r306176;
double r306178 = a;
double r306179 = 0.5;
double r306180 = r306178 - r306179;
double r306181 = log(r306176);
double r306182 = r306180 * r306181;
double r306183 = r306177 + r306182;
return r306183;
}
double f(double x, double y, double z, double t, double a) {
double r306184 = t;
double r306185 = log(r306184);
double r306186 = a;
double r306187 = 0.5;
double r306188 = r306186 - r306187;
double r306189 = x;
double r306190 = y;
double r306191 = r306189 + r306190;
double r306192 = log(r306191);
double r306193 = 3.0;
double r306194 = pow(r306192, r306193);
double r306195 = z;
double r306196 = log(r306195);
double r306197 = pow(r306196, r306193);
double r306198 = r306194 + r306197;
double r306199 = r306192 - r306196;
double r306200 = pow(r306199, r306193);
double r306201 = cbrt(r306200);
double r306202 = r306196 * r306196;
double r306203 = fma(r306192, r306201, r306202);
double r306204 = r306198 / r306203;
double r306205 = r306204 - r306184;
double r306206 = fma(r306185, r306188, r306205);
return r306206;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 0.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 0.3
Simplified0.3
rmApplied pow10.3
rmApplied flip3-+0.3
Simplified0.3
rmApplied add-cbrt-cube0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020047 +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))))