Average Error: 5.9 → 4.3
Time: 17.9s
Precision: 64
\[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le 520673369551077.9375:\\ \;\;\;\;\left(\sqrt{\left(x - 0.5\right) \cdot \log x - x} \cdot \sqrt{\left(x - 0.5\right) \cdot \log x - x} + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \left(\frac{{z}^{2}}{x} \cdot \left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) - 0.002777777777777800001512975569539776188321 \cdot \frac{z}{x}\right)\\ \end{array}\]
\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}
\begin{array}{l}
\mathbf{if}\;x \le 520673369551077.9375:\\
\;\;\;\;\left(\sqrt{\left(x - 0.5\right) \cdot \log x - x} \cdot \sqrt{\left(x - 0.5\right) \cdot \log x - x} + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\\

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

\end{array}
double f(double x, double y, double z) {
        double r507122 = x;
        double r507123 = 0.5;
        double r507124 = r507122 - r507123;
        double r507125 = log(r507122);
        double r507126 = r507124 * r507125;
        double r507127 = r507126 - r507122;
        double r507128 = 0.91893853320467;
        double r507129 = r507127 + r507128;
        double r507130 = y;
        double r507131 = 0.0007936500793651;
        double r507132 = r507130 + r507131;
        double r507133 = z;
        double r507134 = r507132 * r507133;
        double r507135 = 0.0027777777777778;
        double r507136 = r507134 - r507135;
        double r507137 = r507136 * r507133;
        double r507138 = 0.083333333333333;
        double r507139 = r507137 + r507138;
        double r507140 = r507139 / r507122;
        double r507141 = r507129 + r507140;
        return r507141;
}

double f(double x, double y, double z) {
        double r507142 = x;
        double r507143 = 520673369551077.94;
        bool r507144 = r507142 <= r507143;
        double r507145 = 0.5;
        double r507146 = r507142 - r507145;
        double r507147 = log(r507142);
        double r507148 = r507146 * r507147;
        double r507149 = r507148 - r507142;
        double r507150 = sqrt(r507149);
        double r507151 = r507150 * r507150;
        double r507152 = 0.91893853320467;
        double r507153 = r507151 + r507152;
        double r507154 = y;
        double r507155 = 0.0007936500793651;
        double r507156 = r507154 + r507155;
        double r507157 = z;
        double r507158 = r507156 * r507157;
        double r507159 = 0.0027777777777778;
        double r507160 = r507158 - r507159;
        double r507161 = r507160 * r507157;
        double r507162 = 0.083333333333333;
        double r507163 = r507161 + r507162;
        double r507164 = r507163 / r507142;
        double r507165 = r507153 + r507164;
        double r507166 = r507149 + r507152;
        double r507167 = 2.0;
        double r507168 = pow(r507157, r507167);
        double r507169 = r507168 / r507142;
        double r507170 = r507169 * r507156;
        double r507171 = r507157 / r507142;
        double r507172 = r507159 * r507171;
        double r507173 = r507170 - r507172;
        double r507174 = r507166 + r507173;
        double r507175 = r507144 ? r507165 : r507174;
        return r507175;
}

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.9
Target1.2
Herbie4.3
\[\left(\left(\left(x - 0.5\right) \cdot \log x + \left(0.9189385332046700050057097541866824030876 - x\right)\right) + \frac{0.08333333333333299564049667651488562114537}{x}\right) + \frac{z}{x} \cdot \left(z \cdot \left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) - 0.002777777777777800001512975569539776188321\right)\]

Derivation

  1. Split input into 2 regimes
  2. if x < 520673369551077.94

    1. Initial program 0.1

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt0.4

      \[\leadsto \left(\color{blue}{\sqrt{\left(x - 0.5\right) \cdot \log x - x} \cdot \sqrt{\left(x - 0.5\right) \cdot \log x - x}} + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]

    if 520673369551077.94 < x

    1. Initial program 10.5

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]
    2. Taylor expanded around inf 10.5

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \color{blue}{\left(\left(7.936500793651000149400709382518925849581 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} + \frac{{z}^{2} \cdot y}{x}\right) - 0.002777777777777800001512975569539776188321 \cdot \frac{z}{x}\right)}\]
    3. Simplified7.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 520673369551077.9375:\\ \;\;\;\;\left(\sqrt{\left(x - 0.5\right) \cdot \log x - x} \cdot \sqrt{\left(x - 0.5\right) \cdot \log x - x} + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \left(\frac{{z}^{2}}{x} \cdot \left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) - 0.002777777777777800001512975569539776188321 \cdot \frac{z}{x}\right)\\ \end{array}\]

Reproduce

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