Average Error: 5.7 → 2.4
Time: 26.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 1.0048655881704563 \cdot 10^{+85}:\\ \;\;\;\;\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) + \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{0.083333333333333}{x} - \left(\frac{0.0027777777777778}{x} \cdot z - \frac{0.0007936500793651 \cdot z}{\frac{x}{z}}\right)\right) + \left(\left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467\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.0048655881704563 \cdot 10^{+85}:\\
\;\;\;\;\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) + \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x}\right)\right)\\

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

\end{array}
double f(double x, double y, double z) {
        double r21372930 = x;
        double r21372931 = 0.5;
        double r21372932 = r21372930 - r21372931;
        double r21372933 = log(r21372930);
        double r21372934 = r21372932 * r21372933;
        double r21372935 = r21372934 - r21372930;
        double r21372936 = 0.91893853320467;
        double r21372937 = r21372935 + r21372936;
        double r21372938 = y;
        double r21372939 = 0.0007936500793651;
        double r21372940 = r21372938 + r21372939;
        double r21372941 = z;
        double r21372942 = r21372940 * r21372941;
        double r21372943 = 0.0027777777777778;
        double r21372944 = r21372942 - r21372943;
        double r21372945 = r21372944 * r21372941;
        double r21372946 = 0.083333333333333;
        double r21372947 = r21372945 + r21372946;
        double r21372948 = r21372947 / r21372930;
        double r21372949 = r21372937 + r21372948;
        return r21372949;
}

double f(double x, double y, double z) {
        double r21372950 = x;
        double r21372951 = 1.0048655881704563e+85;
        bool r21372952 = r21372950 <= r21372951;
        double r21372953 = 0.083333333333333;
        double r21372954 = y;
        double r21372955 = 0.0007936500793651;
        double r21372956 = r21372954 + r21372955;
        double r21372957 = z;
        double r21372958 = r21372956 * r21372957;
        double r21372959 = 0.0027777777777778;
        double r21372960 = r21372958 - r21372959;
        double r21372961 = r21372960 * r21372957;
        double r21372962 = r21372953 + r21372961;
        double r21372963 = r21372962 / r21372950;
        double r21372964 = 0.91893853320467;
        double r21372965 = sqrt(r21372950);
        double r21372966 = log(r21372965);
        double r21372967 = 0.5;
        double r21372968 = r21372950 - r21372967;
        double r21372969 = r21372966 * r21372968;
        double r21372970 = r21372969 - r21372950;
        double r21372971 = sqrt(r21372970);
        double r21372972 = r21372971 * r21372971;
        double r21372973 = r21372969 + r21372972;
        double r21372974 = r21372964 + r21372973;
        double r21372975 = r21372963 + r21372974;
        double r21372976 = r21372953 / r21372950;
        double r21372977 = r21372959 / r21372950;
        double r21372978 = r21372977 * r21372957;
        double r21372979 = r21372955 * r21372957;
        double r21372980 = r21372950 / r21372957;
        double r21372981 = r21372979 / r21372980;
        double r21372982 = r21372978 - r21372981;
        double r21372983 = r21372976 - r21372982;
        double r21372984 = r21372969 + r21372970;
        double r21372985 = r21372984 + r21372964;
        double r21372986 = r21372983 + r21372985;
        double r21372987 = r21372952 ? r21372975 : r21372986;
        return r21372987;
}

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
Herbie2.4
\[\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.0048655881704563e+85

    1. Initial program 0.7

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

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

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

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

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

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

    if 1.0048655881704563e+85 < x

    1. Initial program 11.7

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

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

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

      \[\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+11.7

      \[\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. Taylor expanded around 0 10.5

      \[\leadsto \left(\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) + \color{blue}{\left(\left(0.0007936500793651 \cdot \frac{{z}^{2}}{x} + 0.083333333333333 \cdot \frac{1}{x}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)}\]
    8. Simplified4.0

      \[\leadsto \left(\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) + \color{blue}{\left(\frac{0.083333333333333}{x} - \left(\frac{0.0027777777777778}{x} \cdot z - \frac{z \cdot 0.0007936500793651}{\frac{x}{z}}\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 1.0048655881704563 \cdot 10^{+85}:\\ \;\;\;\;\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) + \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{0.083333333333333}{x} - \left(\frac{0.0027777777777778}{x} \cdot z - \frac{0.0007936500793651 \cdot z}{\frac{x}{z}}\right)\right) + \left(\left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) + \left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467\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)))