Average Error: 0.3 → 0.3
Time: 25.2s
Precision: 64
\[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t\]
\[\log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t\right)\]
\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t\right)
double f(double x, double y, double z, double t, double a) {
        double r303957 = x;
        double r303958 = y;
        double r303959 = r303957 + r303958;
        double r303960 = log(r303959);
        double r303961 = z;
        double r303962 = log(r303961);
        double r303963 = r303960 + r303962;
        double r303964 = t;
        double r303965 = r303963 - r303964;
        double r303966 = a;
        double r303967 = 0.5;
        double r303968 = r303966 - r303967;
        double r303969 = log(r303964);
        double r303970 = r303968 * r303969;
        double r303971 = r303965 + r303970;
        return r303971;
}

double f(double x, double y, double z, double t, double a) {
        double r303972 = x;
        double r303973 = y;
        double r303974 = r303972 + r303973;
        double r303975 = log(r303974);
        double r303976 = z;
        double r303977 = log(r303976);
        double r303978 = t;
        double r303979 = r303977 - r303978;
        double r303980 = a;
        double r303981 = 1.0;
        double r303982 = 2.0;
        double r303983 = r303981 / r303982;
        double r303984 = r303980 - r303983;
        double r303985 = log(r303978);
        double r303986 = r303984 * r303985;
        double r303987 = r303979 + r303986;
        double r303988 = r303975 + r303987;
        return r303988;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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. Using strategy rm
  3. Applied associate--l+0.3

    \[\leadsto \color{blue}{\left(\log \left(x + y\right) + \left(\log z - t\right)\right)} + \left(a - 0.5\right) \cdot \log t\]
  4. Applied associate-+l+0.3

    \[\leadsto \color{blue}{\log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right)}\]
  5. Simplified0.3

    \[\leadsto \log \left(x + y\right) + \color{blue}{\left(\left(\log z - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t\right)}\]
  6. Final simplification0.3

    \[\leadsto \log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t\right)\]

Reproduce

herbie shell --seed 2019303 
(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))))