Average Error: 5.6 → 0.5
Time: 1.1m
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 1.285115805799906:\\ \;\;\;\;\frac{0.083333333333333 + \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z}{x} + \left(0.91893853320467 + \left(\left(\left(\sqrt{x} - \sqrt{0.5}\right) \cdot \log x\right) \cdot \left(\sqrt{x} + \sqrt{0.5}\right) - x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right)\right) - x\right) + 0.91893853320467\right) + \left(\frac{z}{\frac{x}{z}} \cdot \left(y + 0.0007936500793651\right) - \frac{z}{x} \cdot 0.0027777777777778\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 1.285115805799906:\\
\;\;\;\;\frac{0.083333333333333 + \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z}{x} + \left(0.91893853320467 + \left(\left(\left(\sqrt{x} - \sqrt{0.5}\right) \cdot \log x\right) \cdot \left(\sqrt{x} + \sqrt{0.5}\right) - x\right)\right)\\

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

\end{array}
double f(double x, double y, double z) {
        double r34104087 = x;
        double r34104088 = 0.5;
        double r34104089 = r34104087 - r34104088;
        double r34104090 = log(r34104087);
        double r34104091 = r34104089 * r34104090;
        double r34104092 = r34104091 - r34104087;
        double r34104093 = 0.91893853320467;
        double r34104094 = r34104092 + r34104093;
        double r34104095 = y;
        double r34104096 = 0.0007936500793651;
        double r34104097 = r34104095 + r34104096;
        double r34104098 = z;
        double r34104099 = r34104097 * r34104098;
        double r34104100 = 0.0027777777777778;
        double r34104101 = r34104099 - r34104100;
        double r34104102 = r34104101 * r34104098;
        double r34104103 = 0.083333333333333;
        double r34104104 = r34104102 + r34104103;
        double r34104105 = r34104104 / r34104087;
        double r34104106 = r34104094 + r34104105;
        return r34104106;
}

double f(double x, double y, double z) {
        double r34104107 = x;
        double r34104108 = 1.285115805799906;
        bool r34104109 = r34104107 <= r34104108;
        double r34104110 = 0.083333333333333;
        double r34104111 = y;
        double r34104112 = 0.0007936500793651;
        double r34104113 = r34104111 + r34104112;
        double r34104114 = z;
        double r34104115 = r34104113 * r34104114;
        double r34104116 = 0.0027777777777778;
        double r34104117 = r34104115 - r34104116;
        double r34104118 = r34104117 * r34104114;
        double r34104119 = r34104110 + r34104118;
        double r34104120 = r34104119 / r34104107;
        double r34104121 = 0.91893853320467;
        double r34104122 = sqrt(r34104107);
        double r34104123 = 0.5;
        double r34104124 = sqrt(r34104123);
        double r34104125 = r34104122 - r34104124;
        double r34104126 = log(r34104107);
        double r34104127 = r34104125 * r34104126;
        double r34104128 = r34104122 + r34104124;
        double r34104129 = r34104127 * r34104128;
        double r34104130 = r34104129 - r34104107;
        double r34104131 = r34104121 + r34104130;
        double r34104132 = r34104120 + r34104131;
        double r34104133 = cbrt(r34104107);
        double r34104134 = log(r34104133);
        double r34104135 = r34104107 - r34104123;
        double r34104136 = r34104134 * r34104135;
        double r34104137 = r34104136 + r34104136;
        double r34104138 = r34104136 + r34104137;
        double r34104139 = r34104138 - r34104107;
        double r34104140 = r34104139 + r34104121;
        double r34104141 = r34104107 / r34104114;
        double r34104142 = r34104114 / r34104141;
        double r34104143 = r34104142 * r34104113;
        double r34104144 = r34104114 / r34104107;
        double r34104145 = r34104144 * r34104116;
        double r34104146 = r34104143 - r34104145;
        double r34104147 = r34104140 + r34104146;
        double r34104148 = r34104109 ? r34104132 : r34104147;
        return r34104148;
}

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.6
Target1.1
Herbie0.5
\[\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 < 1.285115805799906

    1. Initial program 0.1

      \[\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.1

      \[\leadsto \left(\left(\left(x - \color{blue}{\sqrt{0.5} \cdot \sqrt{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}\]
    4. Applied add-sqr-sqrt0.1

      \[\leadsto \left(\left(\left(\color{blue}{\sqrt{x} \cdot \sqrt{x}} - \sqrt{0.5} \cdot \sqrt{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}\]
    5. Applied difference-of-squares0.1

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

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

    if 1.285115805799906 < x

    1. Initial program 9.5

      \[\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-cube-cbrt9.5

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log \color{blue}{\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{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-prod9.6

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

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

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

      \[\leadsto \left(\left(\left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) + \color{blue}{\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)}\right) - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    8. Using strategy rm
    9. Applied div-inv9.6

      \[\leadsto \left(\left(\left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) - x\right) + 0.91893853320467\right) + \color{blue}{\left(\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333\right) \cdot \frac{1}{x}}\]
    10. Taylor expanded around inf 9.9

      \[\leadsto \left(\left(\left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) - 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)}\]
    11. Simplified0.8

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

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

Reproduce

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