Average Error: 5.8 → 5.8
Time: 8.0s
Precision: 64
\[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
\[\left(\log x \cdot x + \log x \cdot \left(-0.5\right)\right) + \left(\frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)\]
\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}
\left(\log x \cdot x + \log x \cdot \left(-0.5\right)\right) + \left(\frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)
double f(double x, double y, double z) {
        double r442535 = x;
        double r442536 = 0.5;
        double r442537 = r442535 - r442536;
        double r442538 = log(r442535);
        double r442539 = r442537 * r442538;
        double r442540 = r442539 - r442535;
        double r442541 = 0.91893853320467;
        double r442542 = r442540 + r442541;
        double r442543 = y;
        double r442544 = 0.0007936500793651;
        double r442545 = r442543 + r442544;
        double r442546 = z;
        double r442547 = r442545 * r442546;
        double r442548 = 0.0027777777777778;
        double r442549 = r442547 - r442548;
        double r442550 = r442549 * r442546;
        double r442551 = 0.083333333333333;
        double r442552 = r442550 + r442551;
        double r442553 = r442552 / r442535;
        double r442554 = r442542 + r442553;
        return r442554;
}

double f(double x, double y, double z) {
        double r442555 = x;
        double r442556 = log(r442555);
        double r442557 = r442556 * r442555;
        double r442558 = 0.5;
        double r442559 = -r442558;
        double r442560 = r442556 * r442559;
        double r442561 = r442557 + r442560;
        double r442562 = y;
        double r442563 = 0.0007936500793651;
        double r442564 = r442562 + r442563;
        double r442565 = z;
        double r442566 = r442564 * r442565;
        double r442567 = 0.0027777777777778;
        double r442568 = r442566 - r442567;
        double r442569 = r442568 * r442565;
        double r442570 = 0.083333333333333;
        double r442571 = r442569 + r442570;
        double r442572 = r442571 / r442555;
        double r442573 = 0.91893853320467;
        double r442574 = r442555 - r442573;
        double r442575 = r442572 - r442574;
        double r442576 = r442561 + r442575;
        return r442576;
}

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

Original5.8
Target1.0
Herbie5.8
\[\left(\left(\left(x - 0.5\right) \cdot \log x + \left(0.91893853320467001 - x\right)\right) + \frac{0.0833333333333329956}{x}\right) + \frac{z}{x} \cdot \left(z \cdot \left(y + 7.93650079365100015 \cdot 10^{-4}\right) - 0.0027777777777778\right)\]

Derivation

  1. Initial program 5.8

    \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
  2. Simplified5.8

    \[\leadsto \color{blue}{\mathsf{fma}\left(\log x, x - 0.5, \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)}\]
  3. Using strategy rm
  4. Applied fma-udef5.8

    \[\leadsto \color{blue}{\log x \cdot \left(x - 0.5\right) + \left(\frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)}\]
  5. Using strategy rm
  6. Applied sub-neg5.8

    \[\leadsto \log x \cdot \color{blue}{\left(x + \left(-0.5\right)\right)} + \left(\frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)\]
  7. Applied distribute-lft-in5.8

    \[\leadsto \color{blue}{\left(\log x \cdot x + \log x \cdot \left(-0.5\right)\right)} + \left(\frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)\]
  8. Final simplification5.8

    \[\leadsto \left(\log x \cdot x + \log x \cdot \left(-0.5\right)\right) + \left(\frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)\]

Reproduce

herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y z)
  :name "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B"
  :precision binary64

  :herbie-target
  (+ (+ (+ (* (- x 0.5) (log x)) (- 0.91893853320467 x)) (/ 0.083333333333333 x)) (* (/ z x) (- (* z (+ y 0.0007936500793651)) 0.0027777777777778)))

  (+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467) (/ (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333) x)))