Average Error: 5.7 → 0.3
Time: 30.1s
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}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333 \le -1.61040270274943 \cdot 10^{+287}:\\ \;\;\;\;\left(\left(0.91893853320467 + \mathsf{fma}\left(x, -1, x\right)\right) + \mathsf{fma}\left(x - 0.5, \log x, \left(-\sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right) + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot \frac{z}{x}\right) - \frac{z}{x} \cdot 0.0027777777777778\right)\\ \mathbf{elif}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333 \le 1.7606998282830466 \cdot 10^{+171}:\\ \;\;\;\;\frac{z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333}{x} + \left(\mathsf{fma}\left(\log \left(\sqrt[3]{\sqrt{x}}\right), x - 0.5, \mathsf{fma}\left(x - 0.5, \log \left(\sqrt{x}\right), \mathsf{fma}\left(x, -1, 0.91893853320467\right)\right)\right) + \left(x - 0.5\right) \cdot \log \left(\sqrt[3]{\sqrt{x}} \cdot \sqrt[3]{\sqrt{x}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(0.91893853320467 + \mathsf{fma}\left(x, -1, x\right)\right) + \mathsf{fma}\left(x - 0.5, \log x, \left(-\sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right) + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot \frac{z}{x}\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}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333 \le -1.61040270274943 \cdot 10^{+287}:\\
\;\;\;\;\left(\left(0.91893853320467 + \mathsf{fma}\left(x, -1, x\right)\right) + \mathsf{fma}\left(x - 0.5, \log x, \left(-\sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right) + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot \frac{z}{x}\right) - \frac{z}{x} \cdot 0.0027777777777778\right)\\

\mathbf{elif}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333 \le 1.7606998282830466 \cdot 10^{+171}:\\
\;\;\;\;\frac{z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333}{x} + \left(\mathsf{fma}\left(\log \left(\sqrt[3]{\sqrt{x}}\right), x - 0.5, \mathsf{fma}\left(x - 0.5, \log \left(\sqrt{x}\right), \mathsf{fma}\left(x, -1, 0.91893853320467\right)\right)\right) + \left(x - 0.5\right) \cdot \log \left(\sqrt[3]{\sqrt{x}} \cdot \sqrt[3]{\sqrt{x}}\right)\right)\\

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

\end{array}
double f(double x, double y, double z) {
        double r21077644 = x;
        double r21077645 = 0.5;
        double r21077646 = r21077644 - r21077645;
        double r21077647 = log(r21077644);
        double r21077648 = r21077646 * r21077647;
        double r21077649 = r21077648 - r21077644;
        double r21077650 = 0.91893853320467;
        double r21077651 = r21077649 + r21077650;
        double r21077652 = y;
        double r21077653 = 0.0007936500793651;
        double r21077654 = r21077652 + r21077653;
        double r21077655 = z;
        double r21077656 = r21077654 * r21077655;
        double r21077657 = 0.0027777777777778;
        double r21077658 = r21077656 - r21077657;
        double r21077659 = r21077658 * r21077655;
        double r21077660 = 0.083333333333333;
        double r21077661 = r21077659 + r21077660;
        double r21077662 = r21077661 / r21077644;
        double r21077663 = r21077651 + r21077662;
        return r21077663;
}

double f(double x, double y, double z) {
        double r21077664 = z;
        double r21077665 = 0.0007936500793651;
        double r21077666 = y;
        double r21077667 = r21077665 + r21077666;
        double r21077668 = r21077667 * r21077664;
        double r21077669 = 0.0027777777777778;
        double r21077670 = r21077668 - r21077669;
        double r21077671 = r21077664 * r21077670;
        double r21077672 = 0.083333333333333;
        double r21077673 = r21077671 + r21077672;
        double r21077674 = -1.61040270274943e+287;
        bool r21077675 = r21077673 <= r21077674;
        double r21077676 = 0.91893853320467;
        double r21077677 = x;
        double r21077678 = -1.0;
        double r21077679 = fma(r21077677, r21077678, r21077677);
        double r21077680 = r21077676 + r21077679;
        double r21077681 = 0.5;
        double r21077682 = r21077677 - r21077681;
        double r21077683 = log(r21077677);
        double r21077684 = cbrt(r21077677);
        double r21077685 = -r21077684;
        double r21077686 = r21077684 * r21077684;
        double r21077687 = r21077685 * r21077686;
        double r21077688 = fma(r21077682, r21077683, r21077687);
        double r21077689 = r21077680 + r21077688;
        double r21077690 = r21077664 / r21077677;
        double r21077691 = r21077664 * r21077690;
        double r21077692 = r21077667 * r21077691;
        double r21077693 = r21077690 * r21077669;
        double r21077694 = r21077692 - r21077693;
        double r21077695 = r21077689 + r21077694;
        double r21077696 = 1.7606998282830466e+171;
        bool r21077697 = r21077673 <= r21077696;
        double r21077698 = r21077673 / r21077677;
        double r21077699 = sqrt(r21077677);
        double r21077700 = cbrt(r21077699);
        double r21077701 = log(r21077700);
        double r21077702 = log(r21077699);
        double r21077703 = fma(r21077677, r21077678, r21077676);
        double r21077704 = fma(r21077682, r21077702, r21077703);
        double r21077705 = fma(r21077701, r21077682, r21077704);
        double r21077706 = r21077700 * r21077700;
        double r21077707 = log(r21077706);
        double r21077708 = r21077682 * r21077707;
        double r21077709 = r21077705 + r21077708;
        double r21077710 = r21077698 + r21077709;
        double r21077711 = r21077697 ? r21077710 : r21077695;
        double r21077712 = r21077675 ? r21077695 : r21077711;
        return r21077712;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original5.7
Target1.2
Herbie0.3
\[\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 (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333) < -1.61040270274943e+287 or 1.7606998282830466e+171 < (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333)

    1. Initial program 32.3

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

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

      \[\leadsto \left(\color{blue}{\left(\mathsf{fma}\left(x - 0.5, \log x, -\sqrt[3]{x} \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{x}, \sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x} \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right)} + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    5. Applied associate-+l+32.3

      \[\leadsto \color{blue}{\left(\mathsf{fma}\left(x - 0.5, \log x, -\sqrt[3]{x} \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) + \left(\mathsf{fma}\left(-\sqrt[3]{x}, \sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x} \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) + 0.91893853320467\right)\right)} + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    6. Simplified32.3

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

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

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

    if -1.61040270274943e+287 < (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333) < 1.7606998282830466e+171

    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.3

      \[\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. Applied associate-+l+0.3

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

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

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

      \[\leadsto \left(\color{blue}{\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{\sqrt{x}} \cdot \sqrt[3]{\sqrt{x}}\right) + \left(x - 0.5\right) \cdot \log \left(\sqrt[3]{\sqrt{x}}\right)\right)} + \left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt{x}\right) - x\right) + 0.91893853320467\right)\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\]
    12. Applied associate-+l+0.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333 \le -1.61040270274943 \cdot 10^{+287}:\\ \;\;\;\;\left(\left(0.91893853320467 + \mathsf{fma}\left(x, -1, x\right)\right) + \mathsf{fma}\left(x - 0.5, \log x, \left(-\sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right) + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot \frac{z}{x}\right) - \frac{z}{x} \cdot 0.0027777777777778\right)\\ \mathbf{elif}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333 \le 1.7606998282830466 \cdot 10^{+171}:\\ \;\;\;\;\frac{z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) + 0.083333333333333}{x} + \left(\mathsf{fma}\left(\log \left(\sqrt[3]{\sqrt{x}}\right), x - 0.5, \mathsf{fma}\left(x - 0.5, \log \left(\sqrt{x}\right), \mathsf{fma}\left(x, -1, 0.91893853320467\right)\right)\right) + \left(x - 0.5\right) \cdot \log \left(\sqrt[3]{\sqrt{x}} \cdot \sqrt[3]{\sqrt{x}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(0.91893853320467 + \mathsf{fma}\left(x, -1, x\right)\right) + \mathsf{fma}\left(x - 0.5, \log x, \left(-\sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right) + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot \frac{z}{x}\right) - \frac{z}{x} \cdot 0.0027777777777778\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(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)))