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

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

\end{array}
double f(double x, double y, double z) {
        double r25034608 = x;
        double r25034609 = 0.5;
        double r25034610 = r25034608 - r25034609;
        double r25034611 = log(r25034608);
        double r25034612 = r25034610 * r25034611;
        double r25034613 = r25034612 - r25034608;
        double r25034614 = 0.91893853320467;
        double r25034615 = r25034613 + r25034614;
        double r25034616 = y;
        double r25034617 = 0.0007936500793651;
        double r25034618 = r25034616 + r25034617;
        double r25034619 = z;
        double r25034620 = r25034618 * r25034619;
        double r25034621 = 0.0027777777777778;
        double r25034622 = r25034620 - r25034621;
        double r25034623 = r25034622 * r25034619;
        double r25034624 = 0.083333333333333;
        double r25034625 = r25034623 + r25034624;
        double r25034626 = r25034625 / r25034608;
        double r25034627 = r25034615 + r25034626;
        return r25034627;
}

double f(double x, double y, double z) {
        double r25034628 = x;
        double r25034629 = 7033530.257601138;
        bool r25034630 = r25034628 <= r25034629;
        double r25034631 = 0.5;
        double r25034632 = r25034628 - r25034631;
        double r25034633 = log(r25034628);
        double r25034634 = r25034632 * r25034633;
        double r25034635 = r25034634 - r25034628;
        double r25034636 = 0.91893853320467;
        double r25034637 = r25034635 + r25034636;
        double r25034638 = 0.083333333333333;
        double r25034639 = 0.0007936500793651;
        double r25034640 = y;
        double r25034641 = r25034639 + r25034640;
        double r25034642 = z;
        double r25034643 = r25034642 * r25034642;
        double r25034644 = r25034641 * r25034643;
        double r25034645 = 0.0027777777777778;
        double r25034646 = r25034645 * r25034642;
        double r25034647 = r25034644 - r25034646;
        double r25034648 = r25034638 + r25034647;
        double r25034649 = r25034648 / r25034628;
        double r25034650 = r25034637 + r25034649;
        double r25034651 = cbrt(r25034628);
        double r25034652 = log(r25034651);
        double r25034653 = r25034652 * r25034632;
        double r25034654 = r25034653 - r25034628;
        double r25034655 = r25034651 * r25034651;
        double r25034656 = log(r25034655);
        double r25034657 = r25034632 * r25034656;
        double r25034658 = r25034654 + r25034657;
        double r25034659 = r25034658 + r25034636;
        double r25034660 = r25034642 / r25034628;
        double r25034661 = r25034642 * r25034660;
        double r25034662 = r25034641 * r25034661;
        double r25034663 = r25034645 * r25034660;
        double r25034664 = r25034662 - r25034663;
        double r25034665 = r25034659 + r25034664;
        double r25034666 = r25034630 ? r25034650 : r25034665;
        return r25034666;
}

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.1
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 x < 7033530.257601138

    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. Taylor expanded around 0 0.1

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

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

    if 7033530.257601138 < x

    1. Initial program 10.4

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

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

      \[\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-rgt-in10.5

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

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

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

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

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

Reproduce

herbie shell --seed 2019165 +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)))