Average Error: 6.0 → 4.4
Time: 16.3s
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}\]
\[\begin{array}{l} \mathbf{if}\;x \le 2.0012039557004164 \cdot 10^{87}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right) + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \left(\frac{{z}^{2}}{x} \cdot \left(y + 7.93650079365100015 \cdot 10^{-4}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)\\ \end{array}\]
\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}
\begin{array}{l}
\mathbf{if}\;x \le 2.0012039557004164 \cdot 10^{87}:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right) + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \left(\frac{{z}^{2}}{x} \cdot \left(y + 7.93650079365100015 \cdot 10^{-4}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)\\

\end{array}
double f(double x, double y, double z) {
        double r1060397 = x;
        double r1060398 = 0.5;
        double r1060399 = r1060397 - r1060398;
        double r1060400 = log(r1060397);
        double r1060401 = r1060399 * r1060400;
        double r1060402 = r1060401 - r1060397;
        double r1060403 = 0.91893853320467;
        double r1060404 = r1060402 + r1060403;
        double r1060405 = y;
        double r1060406 = 0.0007936500793651;
        double r1060407 = r1060405 + r1060406;
        double r1060408 = z;
        double r1060409 = r1060407 * r1060408;
        double r1060410 = 0.0027777777777778;
        double r1060411 = r1060409 - r1060410;
        double r1060412 = r1060411 * r1060408;
        double r1060413 = 0.083333333333333;
        double r1060414 = r1060412 + r1060413;
        double r1060415 = r1060414 / r1060397;
        double r1060416 = r1060404 + r1060415;
        return r1060416;
}

double f(double x, double y, double z) {
        double r1060417 = x;
        double r1060418 = 2.0012039557004164e+87;
        bool r1060419 = r1060417 <= r1060418;
        double r1060420 = 0.5;
        double r1060421 = r1060417 - r1060420;
        double r1060422 = sqrt(r1060417);
        double r1060423 = log(r1060422);
        double r1060424 = r1060421 * r1060423;
        double r1060425 = r1060423 * r1060421;
        double r1060426 = r1060425 - r1060417;
        double r1060427 = r1060424 + r1060426;
        double r1060428 = 0.91893853320467;
        double r1060429 = r1060427 + r1060428;
        double r1060430 = y;
        double r1060431 = 0.0007936500793651;
        double r1060432 = r1060430 + r1060431;
        double r1060433 = z;
        double r1060434 = r1060432 * r1060433;
        double r1060435 = 0.0027777777777778;
        double r1060436 = r1060434 - r1060435;
        double r1060437 = r1060436 * r1060433;
        double r1060438 = 0.083333333333333;
        double r1060439 = r1060437 + r1060438;
        double r1060440 = r1060439 / r1060417;
        double r1060441 = r1060429 + r1060440;
        double r1060442 = log(r1060417);
        double r1060443 = r1060421 * r1060442;
        double r1060444 = r1060443 - r1060417;
        double r1060445 = r1060444 + r1060428;
        double r1060446 = 2.0;
        double r1060447 = pow(r1060433, r1060446);
        double r1060448 = r1060447 / r1060417;
        double r1060449 = r1060448 * r1060432;
        double r1060450 = r1060433 / r1060417;
        double r1060451 = r1060435 * r1060450;
        double r1060452 = r1060449 - r1060451;
        double r1060453 = r1060445 + r1060452;
        double r1060454 = r1060419 ? r1060441 : r1060453;
        return r1060454;
}

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

Original6.0
Target1.1
Herbie4.4
\[\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. Split input into 2 regimes
  2. if x < 2.0012039557004164e+87

    1. Initial program 0.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. Using strategy rm
    3. Applied add-sqr-sqrt0.8

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log \color{blue}{\left(\sqrt{x} \cdot \sqrt{x}\right)} - 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}\]
    4. Applied log-prod0.8

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \color{blue}{\left(\log \left(\sqrt{x}\right) + \log \left(\sqrt{x}\right)\right)} - 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}\]
    5. Applied distribute-lft-in0.8

      \[\leadsto \left(\left(\color{blue}{\left(\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right) + \left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right)\right)} - 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}\]
    6. Applied associate--l+0.9

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

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

    if 2.0012039557004164e+87 < x

    1. Initial program 12.5

      \[\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. Taylor expanded around inf 12.6

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \color{blue}{\left(\left(7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} + \frac{{z}^{2} \cdot y}{x}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)}\]
    3. Simplified9.0

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \color{blue}{\left(\frac{{z}^{2}}{x} \cdot \left(y + 7.93650079365100015 \cdot 10^{-4}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 2.0012039557004164 \cdot 10^{87}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right) + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \left(\frac{{z}^{2}}{x} \cdot \left(y + 7.93650079365100015 \cdot 10^{-4}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)\\ \end{array}\]

Reproduce

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