Average Error: 5.7 → 3.9
Time: 28.5s
Precision: 64
\[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le 6.901387925691936 \cdot 10^{+29}:\\ \;\;\;\;\frac{0.083333333333333 + \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z}{x} + \left(0.91893853320467 + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) + \left(\sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right)} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right)} - x\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(0.91893853320467 + \left(\left(x - 0.5\right) \cdot \log x - x\right)\right) + \left(\left(y + 0.0007936500793651\right) \cdot \frac{z \cdot z}{x} - \frac{0.0027777777777778}{\frac{x}{z}}\right)\\ \end{array}\]
\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}
\begin{array}{l}
\mathbf{if}\;x \le 6.901387925691936 \cdot 10^{+29}:\\
\;\;\;\;\frac{0.083333333333333 + \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z}{x} + \left(0.91893853320467 + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) + \left(\sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right)} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right)} - x\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\left(0.91893853320467 + \left(\left(x - 0.5\right) \cdot \log x - x\right)\right) + \left(\left(y + 0.0007936500793651\right) \cdot \frac{z \cdot z}{x} - \frac{0.0027777777777778}{\frac{x}{z}}\right)\\

\end{array}
double f(double x, double y, double z) {
        double r25250202 = x;
        double r25250203 = 0.5;
        double r25250204 = r25250202 - r25250203;
        double r25250205 = log(r25250202);
        double r25250206 = r25250204 * r25250205;
        double r25250207 = r25250206 - r25250202;
        double r25250208 = 0.91893853320467;
        double r25250209 = r25250207 + r25250208;
        double r25250210 = y;
        double r25250211 = 0.0007936500793651;
        double r25250212 = r25250210 + r25250211;
        double r25250213 = z;
        double r25250214 = r25250212 * r25250213;
        double r25250215 = 0.0027777777777778;
        double r25250216 = r25250214 - r25250215;
        double r25250217 = r25250216 * r25250213;
        double r25250218 = 0.083333333333333;
        double r25250219 = r25250217 + r25250218;
        double r25250220 = r25250219 / r25250202;
        double r25250221 = r25250209 + r25250220;
        return r25250221;
}

double f(double x, double y, double z) {
        double r25250222 = x;
        double r25250223 = 6.901387925691936e+29;
        bool r25250224 = r25250222 <= r25250223;
        double r25250225 = 0.083333333333333;
        double r25250226 = y;
        double r25250227 = 0.0007936500793651;
        double r25250228 = r25250226 + r25250227;
        double r25250229 = z;
        double r25250230 = r25250228 * r25250229;
        double r25250231 = 0.0027777777777778;
        double r25250232 = r25250230 - r25250231;
        double r25250233 = r25250232 * r25250229;
        double r25250234 = r25250225 + r25250233;
        double r25250235 = r25250234 / r25250222;
        double r25250236 = 0.91893853320467;
        double r25250237 = sqrt(r25250222);
        double r25250238 = log(r25250237);
        double r25250239 = 0.5;
        double r25250240 = r25250222 - r25250239;
        double r25250241 = r25250238 * r25250240;
        double r25250242 = sqrt(r25250241);
        double r25250243 = r25250242 * r25250242;
        double r25250244 = r25250243 - r25250222;
        double r25250245 = r25250241 + r25250244;
        double r25250246 = r25250236 + r25250245;
        double r25250247 = r25250235 + r25250246;
        double r25250248 = log(r25250222);
        double r25250249 = r25250240 * r25250248;
        double r25250250 = r25250249 - r25250222;
        double r25250251 = r25250236 + r25250250;
        double r25250252 = r25250229 * r25250229;
        double r25250253 = r25250252 / r25250222;
        double r25250254 = r25250228 * r25250253;
        double r25250255 = r25250222 / r25250229;
        double r25250256 = r25250231 / r25250255;
        double r25250257 = r25250254 - r25250256;
        double r25250258 = r25250251 + r25250257;
        double r25250259 = r25250224 ? r25250247 : r25250258;
        return r25250259;
}

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.7
Target1.2
Herbie3.9
\[\left(\left(\left(x - 0.5\right) \cdot \log x + \left(0.91893853320467 - x\right)\right) + \frac{0.083333333333333}{x}\right) + \frac{z}{x} \cdot \left(z \cdot \left(y + 0.0007936500793651\right) - 0.0027777777777778\right)\]

Derivation

  1. Split input into 2 regimes
  2. if x < 6.901387925691936e+29

    1. Initial program 0.2

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt0.2

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log \color{blue}{\left(\sqrt{x} \cdot \sqrt{x}\right)} - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    4. Applied log-prod0.2

      \[\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.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    5. Applied distribute-lft-in0.2

      \[\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.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    6. Applied associate--l+0.2

      \[\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.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt0.2

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right) + \left(\color{blue}{\sqrt{\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right)} \cdot \sqrt{\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right)}} - x\right)\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]

    if 6.901387925691936e+29 < x

    1. Initial program 10.2

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    2. Taylor expanded around inf 10.4

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\left(\left(0.0007936500793651 \cdot \frac{{z}^{2}}{x} + \frac{{z}^{2} \cdot y}{x}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)}\]
    3. Simplified6.9

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\left(\frac{z \cdot z}{x} \cdot \left(0.0007936500793651 + y\right) - \frac{0.0027777777777778}{\frac{x}{z}}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 6.901387925691936 \cdot 10^{+29}:\\ \;\;\;\;\frac{0.083333333333333 + \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z}{x} + \left(0.91893853320467 + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) + \left(\sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right)} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right)} - x\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(0.91893853320467 + \left(\left(x - 0.5\right) \cdot \log x - x\right)\right) + \left(\left(y + 0.0007936500793651\right) \cdot \frac{z \cdot z}{x} - \frac{0.0027777777777778}{\frac{x}{z}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019163 
(FPCore (x y z)
  :name "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B"

  :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)))