Average Error: 0.2 → 0.3
Time: 1.3m
Precision: 64
\[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t\]
\[\left(\frac{\log \left(y + x\right) \cdot \log \left(y + x\right) - \log z \cdot \log z}{\log \left(y + x\right) - \log z} - t\right) + \left(a - 0.5\right) \cdot \log t\]
\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\frac{\log \left(y + x\right) \cdot \log \left(y + x\right) - \log z \cdot \log z}{\log \left(y + x\right) - \log z} - t\right) + \left(a - 0.5\right) \cdot \log t
double f(double x, double y, double z, double t, double a) {
        double r6574308 = x;
        double r6574309 = y;
        double r6574310 = r6574308 + r6574309;
        double r6574311 = log(r6574310);
        double r6574312 = z;
        double r6574313 = log(r6574312);
        double r6574314 = r6574311 + r6574313;
        double r6574315 = t;
        double r6574316 = r6574314 - r6574315;
        double r6574317 = a;
        double r6574318 = 0.5;
        double r6574319 = r6574317 - r6574318;
        double r6574320 = log(r6574315);
        double r6574321 = r6574319 * r6574320;
        double r6574322 = r6574316 + r6574321;
        return r6574322;
}

double f(double x, double y, double z, double t, double a) {
        double r6574323 = y;
        double r6574324 = x;
        double r6574325 = r6574323 + r6574324;
        double r6574326 = log(r6574325);
        double r6574327 = r6574326 * r6574326;
        double r6574328 = z;
        double r6574329 = log(r6574328);
        double r6574330 = r6574329 * r6574329;
        double r6574331 = r6574327 - r6574330;
        double r6574332 = r6574326 - r6574329;
        double r6574333 = r6574331 / r6574332;
        double r6574334 = t;
        double r6574335 = r6574333 - r6574334;
        double r6574336 = a;
        double r6574337 = 0.5;
        double r6574338 = r6574336 - r6574337;
        double r6574339 = log(r6574334);
        double r6574340 = r6574338 * r6574339;
        double r6574341 = r6574335 + r6574340;
        return r6574341;
}

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

Derivation

  1. Initial program 0.2

    \[\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 flip-+0.3

    \[\leadsto \left(\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) + \left(a - 0.5\right) \cdot \log t\]
  4. Final simplification0.3

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

Reproduce

herbie shell --seed 2019128 
(FPCore (x y z t a)
  :name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
  (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))