Average Error: 0.1 → 0.1
Time: 43.2s
Precision: 64
\[\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z\]
\[\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z\]
\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
double f(double x, double y, double z) {
        double r107908 = x;
        double r107909 = y;
        double r107910 = 0.5;
        double r107911 = r107909 + r107910;
        double r107912 = log(r107909);
        double r107913 = r107911 * r107912;
        double r107914 = r107908 - r107913;
        double r107915 = r107914 + r107909;
        double r107916 = z;
        double r107917 = r107915 - r107916;
        return r107917;
}

double f(double x, double y, double z) {
        double r107918 = x;
        double r107919 = y;
        double r107920 = 0.5;
        double r107921 = r107919 + r107920;
        double r107922 = log(r107919);
        double r107923 = r107921 * r107922;
        double r107924 = r107918 - r107923;
        double r107925 = r107924 + r107919;
        double r107926 = z;
        double r107927 = r107925 - r107926;
        return r107927;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Initial program 0.1

    \[\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z\]
  2. Final simplification0.1

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

Reproduce

herbie shell --seed 2020045 
(FPCore (x y z)
  :name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
  :precision binary64

  :herbie-target
  (- (- (+ y x) z) (* (+ y 0.5) (log y)))

  (- (+ (- x (* (+ y 0.5) (log y))) y) z))