Average Error: 6.1 → 4.3
Time: 9.2s
Precision: 64
\[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
\[\begin{array}{l} \mathbf{if}\;\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le -1.2913307966752496 \cdot 10^{73} \lor \neg \left(\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le 4.9413627594015583 \cdot 10^{85}\right):\\ \;\;\;\;\mathsf{fma}\left(\frac{{z}^{2}}{x}, y, 7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} - \mathsf{fma}\left(\log \left(\frac{1}{x}\right), x, x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left({\left(\frac{\sqrt[3]{1}}{{x}^{\frac{2}{3}}} \cdot \sqrt[3]{1}\right)}^{\frac{-1}{3}} \cdot {\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x}}\right)}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\ \end{array}\]
\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}
\begin{array}{l}
\mathbf{if}\;\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le -1.2913307966752496 \cdot 10^{73} \lor \neg \left(\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le 4.9413627594015583 \cdot 10^{85}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{{z}^{2}}{x}, y, 7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} - \mathsf{fma}\left(\log \left(\frac{1}{x}\right), x, x\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left({\left(\frac{\sqrt[3]{1}}{{x}^{\frac{2}{3}}} \cdot \sqrt[3]{1}\right)}^{\frac{-1}{3}} \cdot {\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x}}\right)}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\

\end{array}
double f(double x, double y, double z) {
        double r555290 = x;
        double r555291 = 0.5;
        double r555292 = r555290 - r555291;
        double r555293 = log(r555290);
        double r555294 = r555292 * r555293;
        double r555295 = r555294 - r555290;
        double r555296 = 0.91893853320467;
        double r555297 = r555295 + r555296;
        double r555298 = y;
        double r555299 = 0.0007936500793651;
        double r555300 = r555298 + r555299;
        double r555301 = z;
        double r555302 = r555300 * r555301;
        double r555303 = 0.0027777777777778;
        double r555304 = r555302 - r555303;
        double r555305 = r555304 * r555301;
        double r555306 = 0.083333333333333;
        double r555307 = r555305 + r555306;
        double r555308 = r555307 / r555290;
        double r555309 = r555297 + r555308;
        return r555309;
}

double f(double x, double y, double z) {
        double r555310 = y;
        double r555311 = 0.0007936500793651;
        double r555312 = r555310 + r555311;
        double r555313 = z;
        double r555314 = r555312 * r555313;
        double r555315 = 0.0027777777777778;
        double r555316 = r555314 - r555315;
        double r555317 = r555316 * r555313;
        double r555318 = -1.2913307966752496e+73;
        bool r555319 = r555317 <= r555318;
        double r555320 = 4.941362759401558e+85;
        bool r555321 = r555317 <= r555320;
        double r555322 = !r555321;
        bool r555323 = r555319 || r555322;
        double r555324 = 2.0;
        double r555325 = pow(r555313, r555324);
        double r555326 = x;
        double r555327 = r555325 / r555326;
        double r555328 = r555311 * r555327;
        double r555329 = 1.0;
        double r555330 = r555329 / r555326;
        double r555331 = log(r555330);
        double r555332 = fma(r555331, r555326, r555326);
        double r555333 = r555328 - r555332;
        double r555334 = fma(r555327, r555310, r555333);
        double r555335 = 0.5;
        double r555336 = r555326 - r555335;
        double r555337 = cbrt(r555326);
        double r555338 = r555337 * r555337;
        double r555339 = log(r555338);
        double r555340 = r555336 * r555339;
        double r555341 = cbrt(r555329);
        double r555342 = 0.6666666666666666;
        double r555343 = pow(r555326, r555342);
        double r555344 = r555341 / r555343;
        double r555345 = r555344 * r555341;
        double r555346 = -0.3333333333333333;
        double r555347 = pow(r555345, r555346);
        double r555348 = r555341 / r555337;
        double r555349 = pow(r555348, r555346);
        double r555350 = r555347 * r555349;
        double r555351 = log(r555350);
        double r555352 = 0.91893853320467;
        double r555353 = r555352 - r555326;
        double r555354 = fma(r555351, r555336, r555353);
        double r555355 = r555340 + r555354;
        double r555356 = 0.083333333333333;
        double r555357 = r555317 + r555356;
        double r555358 = r555357 / r555326;
        double r555359 = r555355 + r555358;
        double r555360 = r555323 ? r555334 : r555359;
        return r555360;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original6.1
Target1.1
Herbie4.3
\[\left(\left(\left(x - 0.5\right) \cdot \log x + \left(0.91893853320467001 - x\right)\right) + \frac{0.0833333333333329956}{x}\right) + \frac{z}{x} \cdot \left(z \cdot \left(y + 7.93650079365100015 \cdot 10^{-4}\right) - 0.0027777777777778\right)\]

Derivation

  1. Split input into 2 regimes
  2. if (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < -1.2913307966752496e+73 or 4.941362759401558e+85 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)

    1. Initial program 22.0

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    2. Simplified22.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\log x, x - 0.5, \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x} - \left(x - 0.91893853320467001\right)\right)}\]
    3. Taylor expanded around inf 22.5

      \[\leadsto \color{blue}{\left(7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} + \frac{{z}^{2} \cdot y}{x}\right) - \left(x + x \cdot \log \left(\frac{1}{x}\right)\right)}\]
    4. Simplified15.3

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{{z}^{2}}{x}, y, 7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} - \mathsf{fma}\left(\log \left(\frac{1}{x}\right), x, x\right)\right)}\]

    if -1.2913307966752496e+73 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < 4.941362759401558e+85

    1. Initial program 0.2

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.2

      \[\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.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    4. Applied log-prod0.3

      \[\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.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    5. Applied distribute-lft-in0.3

      \[\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.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    6. Applied associate--l+0.2

      \[\leadsto \left(\color{blue}{\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x}\right) - x\right)\right)} + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    7. Applied associate-+l+0.2

      \[\leadsto \color{blue}{\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x}\right) - x\right) + 0.91893853320467001\right)\right)} + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    8. Simplified0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \color{blue}{\mathsf{fma}\left(\log \left(\sqrt[3]{x}\right), x - 0.5, 0.91893853320467001 - x\right)}\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    9. Taylor expanded around inf 0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \color{blue}{\left({\left(\frac{1}{x}\right)}^{\frac{-1}{3}}\right)}, x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    10. Using strategy rm
    11. Applied add-cube-cbrt0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left({\left(\frac{1}{\color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}\right)}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    12. Applied add-cube-cbrt0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left({\left(\frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}\right)}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    13. Applied times-frac0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left({\color{blue}{\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \frac{\sqrt[3]{1}}{\sqrt[3]{x}}\right)}}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    14. Applied unpow-prod-down0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \color{blue}{\left({\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{x} \cdot \sqrt[3]{x}}\right)}^{\frac{-1}{3}} \cdot {\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x}}\right)}^{\frac{-1}{3}}\right)}, x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
    15. Simplified0.2

      \[\leadsto \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left(\color{blue}{{\left(\frac{\sqrt[3]{1}}{{x}^{\frac{2}{3}}} \cdot \sqrt[3]{1}\right)}^{\frac{-1}{3}}} \cdot {\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x}}\right)}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le -1.2913307966752496 \cdot 10^{73} \lor \neg \left(\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le 4.9413627594015583 \cdot 10^{85}\right):\\ \;\;\;\;\mathsf{fma}\left(\frac{{z}^{2}}{x}, y, 7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} - \mathsf{fma}\left(\log \left(\frac{1}{x}\right), x, x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \mathsf{fma}\left(\log \left({\left(\frac{\sqrt[3]{1}}{{x}^{\frac{2}{3}}} \cdot \sqrt[3]{1}\right)}^{\frac{-1}{3}} \cdot {\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x}}\right)}^{\frac{-1}{3}}\right), x - 0.5, 0.91893853320467001 - x\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\ \end{array}\]

Reproduce

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