Average Error: 0.3 → 0.3
Time: 11.3s
Precision: 64
\[\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{\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \mathsf{fma}\left(\log \left(\sqrt{x + y}\right), \log \left(x + y\right), -{\left(\log z\right)}^{2}\right)}{\log \left(x + y\right) - \log z} - t\right)\]
\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{\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \mathsf{fma}\left(\log \left(\sqrt{x + y}\right), \log \left(x + y\right), -{\left(\log z\right)}^{2}\right)}{\log \left(x + y\right) - \log z} - t\right)
double f(double x, double y, double z, double t, double a) {
        double r303442 = x;
        double r303443 = y;
        double r303444 = r303442 + r303443;
        double r303445 = log(r303444);
        double r303446 = z;
        double r303447 = log(r303446);
        double r303448 = r303445 + r303447;
        double r303449 = t;
        double r303450 = r303448 - r303449;
        double r303451 = a;
        double r303452 = 0.5;
        double r303453 = r303451 - r303452;
        double r303454 = log(r303449);
        double r303455 = r303453 * r303454;
        double r303456 = r303450 + r303455;
        return r303456;
}

double f(double x, double y, double z, double t, double a) {
        double r303457 = t;
        double r303458 = log(r303457);
        double r303459 = a;
        double r303460 = 0.5;
        double r303461 = r303459 - r303460;
        double r303462 = x;
        double r303463 = y;
        double r303464 = r303462 + r303463;
        double r303465 = sqrt(r303464);
        double r303466 = log(r303465);
        double r303467 = log(r303464);
        double r303468 = r303466 * r303467;
        double r303469 = z;
        double r303470 = log(r303469);
        double r303471 = 2.0;
        double r303472 = pow(r303470, r303471);
        double r303473 = -r303472;
        double r303474 = fma(r303466, r303467, r303473);
        double r303475 = r303468 + r303474;
        double r303476 = r303467 - r303470;
        double r303477 = r303475 / r303476;
        double r303478 = r303477 - r303457;
        double r303479 = fma(r303458, r303461, r303478);
        return r303479;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original0.3
Target0.3
Herbie0.3
\[\log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right)\]

Derivation

  1. Initial program 0.3

    \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t\]
  2. Simplified0.3

    \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a - 0.5, \left(\log \left(x + y\right) + \log z\right) - t\right)}\]
  3. Using strategy rm
  4. Applied flip-+0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right)\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \frac{\log \left(x + y\right) \cdot \log \color{blue}{\left(\sqrt{x + y} \cdot \sqrt{x + y}\right)} - \log z \cdot \log z}{\log \left(x + y\right) - \log z} - t\right)\]
  7. Applied log-prod0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \frac{\log \left(x + y\right) \cdot \color{blue}{\left(\log \left(\sqrt{x + y}\right) + \log \left(\sqrt{x + y}\right)\right)} - \log z \cdot \log z}{\log \left(x + y\right) - \log z} - t\right)\]
  8. Applied distribute-rgt-in0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \frac{\color{blue}{\left(\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right)\right)} - \log z \cdot \log z}{\log \left(x + y\right) - \log z} - t\right)\]
  9. Applied associate--l+0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \frac{\color{blue}{\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \left(\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) - \log z \cdot \log z\right)}}{\log \left(x + y\right) - \log z} - t\right)\]
  10. Simplified0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \frac{\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \color{blue}{\mathsf{fma}\left(\log \left(\sqrt{x + y}\right), \log \left(x + y\right), -{\left(\log z\right)}^{2}\right)}}{\log \left(x + y\right) - \log z} - t\right)\]
  11. Final simplification0.3

    \[\leadsto \mathsf{fma}\left(\log t, a - 0.5, \frac{\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \mathsf{fma}\left(\log \left(\sqrt{x + y}\right), \log \left(x + y\right), -{\left(\log z\right)}^{2}\right)}{\log \left(x + y\right) - \log z} - t\right)\]

Reproduce

herbie shell --seed 2020062 +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))))