Average Error: 0.3 → 0.3
Time: 31.2s
Precision: 64
\[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t\]
\[\left(\log \left(x + y\right) + \log z\right) + \left(\log t \cdot \left(a - 0.5\right) - t\right)\]
\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\log \left(x + y\right) + \log z\right) + \left(\log t \cdot \left(a - 0.5\right) - t\right)
double f(double x, double y, double z, double t, double a) {
        double r238734 = x;
        double r238735 = y;
        double r238736 = r238734 + r238735;
        double r238737 = log(r238736);
        double r238738 = z;
        double r238739 = log(r238738);
        double r238740 = r238737 + r238739;
        double r238741 = t;
        double r238742 = r238740 - r238741;
        double r238743 = a;
        double r238744 = 0.5;
        double r238745 = r238743 - r238744;
        double r238746 = log(r238741);
        double r238747 = r238745 * r238746;
        double r238748 = r238742 + r238747;
        return r238748;
}

double f(double x, double y, double z, double t, double a) {
        double r238749 = x;
        double r238750 = y;
        double r238751 = r238749 + r238750;
        double r238752 = log(r238751);
        double r238753 = z;
        double r238754 = log(r238753);
        double r238755 = r238752 + r238754;
        double r238756 = t;
        double r238757 = log(r238756);
        double r238758 = a;
        double r238759 = 0.5;
        double r238760 = r238758 - r238759;
        double r238761 = r238757 * r238760;
        double r238762 = r238761 - r238756;
        double r238763 = r238755 + r238762;
        return r238763;
}

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 sub-neg0.3

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

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

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

    \[\leadsto \left(\log \left(x + y\right) + \log z\right) + \left(\log t \cdot \left(a - 0.5\right) - t\right)\]

Reproduce

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