Average Error: 6.0 → 3.7
Time: 29.0s
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 1.176380466602636012645528110948300751537 \cdot 10^{89}:\\ \;\;\;\;\left(\left(\left(\left(x - 0.5\right) \cdot \left(2 \cdot \log \left(\sqrt[3]{x}\right)\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) - 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}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{1}{12.00000000000004796163466380676254630089 \cdot x + x \cdot \left(z \cdot 0.4000000000000064059868520871532382443547 - {z}^{2} \cdot 0.1009522780952416126654114236771420110017\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 1.176380466602636012645528110948300751537 \cdot 10^{89}:\\
\;\;\;\;\left(\left(\left(\left(x - 0.5\right) \cdot \left(2 \cdot \log \left(\sqrt[3]{x}\right)\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) - 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}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{1}{12.00000000000004796163466380676254630089 \cdot x + x \cdot \left(z \cdot 0.4000000000000064059868520871532382443547 - {z}^{2} \cdot 0.1009522780952416126654114236771420110017\right)}\\

\end{array}
double f(double x, double y, double z) {
        double r302556 = x;
        double r302557 = 0.5;
        double r302558 = r302556 - r302557;
        double r302559 = log(r302556);
        double r302560 = r302558 * r302559;
        double r302561 = r302560 - r302556;
        double r302562 = 0.91893853320467;
        double r302563 = r302561 + r302562;
        double r302564 = y;
        double r302565 = 0.0007936500793651;
        double r302566 = r302564 + r302565;
        double r302567 = z;
        double r302568 = r302566 * r302567;
        double r302569 = 0.0027777777777778;
        double r302570 = r302568 - r302569;
        double r302571 = r302570 * r302567;
        double r302572 = 0.083333333333333;
        double r302573 = r302571 + r302572;
        double r302574 = r302573 / r302556;
        double r302575 = r302563 + r302574;
        return r302575;
}

double f(double x, double y, double z) {
        double r302576 = x;
        double r302577 = 1.176380466602636e+89;
        bool r302578 = r302576 <= r302577;
        double r302579 = 0.5;
        double r302580 = r302576 - r302579;
        double r302581 = 2.0;
        double r302582 = cbrt(r302576);
        double r302583 = log(r302582);
        double r302584 = r302581 * r302583;
        double r302585 = r302580 * r302584;
        double r302586 = r302583 * r302580;
        double r302587 = r302585 + r302586;
        double r302588 = r302587 - r302576;
        double r302589 = 0.91893853320467;
        double r302590 = r302588 + r302589;
        double r302591 = y;
        double r302592 = 0.0007936500793651;
        double r302593 = r302591 + r302592;
        double r302594 = z;
        double r302595 = r302593 * r302594;
        double r302596 = 0.0027777777777778;
        double r302597 = r302595 - r302596;
        double r302598 = r302597 * r302594;
        double r302599 = 0.083333333333333;
        double r302600 = r302598 + r302599;
        double r302601 = r302600 / r302576;
        double r302602 = r302590 + r302601;
        double r302603 = log(r302576);
        double r302604 = r302580 * r302603;
        double r302605 = r302604 - r302576;
        double r302606 = r302605 + r302589;
        double r302607 = 1.0;
        double r302608 = 12.000000000000048;
        double r302609 = r302608 * r302576;
        double r302610 = 0.4000000000000064;
        double r302611 = r302594 * r302610;
        double r302612 = pow(r302594, r302581);
        double r302613 = 0.10095227809524161;
        double r302614 = r302612 * r302613;
        double r302615 = r302611 - r302614;
        double r302616 = r302576 * r302615;
        double r302617 = r302609 + r302616;
        double r302618 = r302607 / r302617;
        double r302619 = r302606 + r302618;
        double r302620 = r302578 ? r302602 : r302619;
        return r302620;
}

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.2
Herbie3.7
\[\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 < 1.176380466602636e+89

    1. Initial program 0.9

      \[\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-cube-cbrt0.9

      \[\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.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]
    4. Applied log-prod1.0

      \[\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.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]
    5. Applied distribute-lft-in1.0

      \[\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.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\]
    6. Simplified1.0

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

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

    if 1.176380466602636e+89 < x

    1. Initial program 12.3

      \[\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 clear-num12.3

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \color{blue}{\frac{1}{\frac{x}{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}}}\]
    4. Taylor expanded around 0 12.0

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{1}{\color{blue}{\left(0.4000000000000064059868520871532382443547 \cdot \left(x \cdot z\right) + 12.00000000000004796163466380676254630089 \cdot x\right) - 0.1009522780952416126654114236771420110017 \cdot \left(x \cdot {z}^{2}\right)}}\]
    5. Simplified7.0

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{1}{\color{blue}{12.00000000000004796163466380676254630089 \cdot x + x \cdot \left(z \cdot 0.4000000000000064059868520871532382443547 - {z}^{2} \cdot 0.1009522780952416126654114236771420110017\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 1.176380466602636012645528110948300751537 \cdot 10^{89}:\\ \;\;\;\;\left(\left(\left(\left(x - 0.5\right) \cdot \left(2 \cdot \log \left(\sqrt[3]{x}\right)\right) + \log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right)\right) - 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}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{1}{12.00000000000004796163466380676254630089 \cdot x + x \cdot \left(z \cdot 0.4000000000000064059868520871532382443547 - {z}^{2} \cdot 0.1009522780952416126654114236771420110017\right)}\\ \end{array}\]

Reproduce

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