Average Error: 29.7 → 9.1
Time: 17.2s
Precision: 64
\[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -3568.684213158036072854883968830108642578:\\ \;\;\;\;\mathsf{fma}\left(0.3333333333333333148296162562473909929395, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.06172839506172839163511412152729462832212\right) - \sqrt[3]{\frac{1}{{x}^{5}}} \cdot 0.1111111111111111049432054187491303309798\\ \mathbf{elif}\;x \le 0.04970871362191315451228845745390572119504:\\ \;\;\;\;\mathsf{fma}\left(\sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\mathsf{fma}\left(\sqrt[3]{1 + x} + \sqrt[3]{x}, \sqrt[3]{1 + x}, {x}^{\frac{2}{3}}\right)}\\ \end{array}\]
\sqrt[3]{x + 1} - \sqrt[3]{x}
\begin{array}{l}
\mathbf{if}\;x \le -3568.684213158036072854883968830108642578:\\
\;\;\;\;\mathsf{fma}\left(0.3333333333333333148296162562473909929395, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.06172839506172839163511412152729462832212\right) - \sqrt[3]{\frac{1}{{x}^{5}}} \cdot 0.1111111111111111049432054187491303309798\\

\mathbf{elif}\;x \le 0.04970871362191315451228845745390572119504:\\
\;\;\;\;\mathsf{fma}\left(\sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(\sqrt[3]{1 + x} + \sqrt[3]{x}, \sqrt[3]{1 + x}, {x}^{\frac{2}{3}}\right)}\\

\end{array}
double f(double x) {
        double r47678 = x;
        double r47679 = 1.0;
        double r47680 = r47678 + r47679;
        double r47681 = cbrt(r47680);
        double r47682 = cbrt(r47678);
        double r47683 = r47681 - r47682;
        return r47683;
}

double f(double x) {
        double r47684 = x;
        double r47685 = -3568.684213158036;
        bool r47686 = r47684 <= r47685;
        double r47687 = 0.3333333333333333;
        double r47688 = 1.0;
        double r47689 = 2.0;
        double r47690 = pow(r47684, r47689);
        double r47691 = r47688 / r47690;
        double r47692 = cbrt(r47691);
        double r47693 = 8.0;
        double r47694 = pow(r47684, r47693);
        double r47695 = r47688 / r47694;
        double r47696 = cbrt(r47695);
        double r47697 = 0.06172839506172839;
        double r47698 = r47696 * r47697;
        double r47699 = fma(r47687, r47692, r47698);
        double r47700 = 5.0;
        double r47701 = pow(r47684, r47700);
        double r47702 = r47688 / r47701;
        double r47703 = cbrt(r47702);
        double r47704 = 0.1111111111111111;
        double r47705 = r47703 * r47704;
        double r47706 = r47699 - r47705;
        double r47707 = 0.049708713621913155;
        bool r47708 = r47684 <= r47707;
        double r47709 = 1.0;
        double r47710 = r47684 + r47709;
        double r47711 = cbrt(r47710);
        double r47712 = r47711 * r47711;
        double r47713 = cbrt(r47712);
        double r47714 = sqrt(r47713);
        double r47715 = r47714 * r47714;
        double r47716 = cbrt(r47711);
        double r47717 = cbrt(r47684);
        double r47718 = -r47717;
        double r47719 = fma(r47715, r47716, r47718);
        double r47720 = r47709 + r47684;
        double r47721 = cbrt(r47720);
        double r47722 = r47721 + r47717;
        double r47723 = 0.6666666666666666;
        double r47724 = pow(r47684, r47723);
        double r47725 = fma(r47722, r47721, r47724);
        double r47726 = r47709 / r47725;
        double r47727 = r47708 ? r47719 : r47726;
        double r47728 = r47686 ? r47706 : r47727;
        return r47728;
}

Error

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if x < -3568.684213158036

    1. Initial program 60.1

      \[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
    2. Taylor expanded around inf 45.7

      \[\leadsto \color{blue}{\left(0.3333333333333333148296162562473909929395 \cdot {\left(\frac{1}{{x}^{2}}\right)}^{\frac{1}{3}} + 0.06172839506172839163511412152729462832212 \cdot {\left(\frac{1}{{x}^{8}}\right)}^{\frac{1}{3}}\right) - 0.1111111111111111049432054187491303309798 \cdot {\left(\frac{1}{{x}^{5}}\right)}^{\frac{1}{3}}}\]
    3. Simplified31.4

      \[\leadsto \color{blue}{\mathsf{fma}\left(0.3333333333333333148296162562473909929395, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.06172839506172839163511412152729462832212\right) - \sqrt[3]{\frac{1}{{x}^{5}}} \cdot 0.1111111111111111049432054187491303309798}\]

    if -3568.684213158036 < x < 0.049708713621913155

    1. Initial program 0.1

      \[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.1

      \[\leadsto \sqrt[3]{\color{blue}{\left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot \sqrt[3]{x + 1}}} - \sqrt[3]{x}\]
    4. Applied cbrt-prod0.1

      \[\leadsto \color{blue}{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}} \cdot \sqrt[3]{\sqrt[3]{x + 1}}} - \sqrt[3]{x}\]
    5. Applied fma-neg0.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)}\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt0.1

      \[\leadsto \mathsf{fma}\left(\color{blue}{\sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\]

    if 0.049708713621913155 < x

    1. Initial program 59.3

      \[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
    2. Using strategy rm
    3. Applied flip3--59.2

      \[\leadsto \color{blue}{\frac{{\left(\sqrt[3]{x + 1}\right)}^{3} - {\left(\sqrt[3]{x}\right)}^{3}}{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1} + \left(\sqrt[3]{x} \cdot \sqrt[3]{x} + \sqrt[3]{x + 1} \cdot \sqrt[3]{x}\right)}}\]
    4. Simplified1.0

      \[\leadsto \frac{\color{blue}{0 + 1}}{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1} + \left(\sqrt[3]{x} \cdot \sqrt[3]{x} + \sqrt[3]{x + 1} \cdot \sqrt[3]{x}\right)}\]
    5. Simplified4.5

      \[\leadsto \frac{0 + 1}{\color{blue}{\mathsf{fma}\left(\sqrt[3]{1 + x} + \sqrt[3]{x}, \sqrt[3]{1 + x}, {x}^{\frac{2}{3}}\right)}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification9.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -3568.684213158036072854883968830108642578:\\ \;\;\;\;\mathsf{fma}\left(0.3333333333333333148296162562473909929395, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.06172839506172839163511412152729462832212\right) - \sqrt[3]{\frac{1}{{x}^{5}}} \cdot 0.1111111111111111049432054187491303309798\\ \mathbf{elif}\;x \le 0.04970871362191315451228845745390572119504:\\ \;\;\;\;\mathsf{fma}\left(\sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\mathsf{fma}\left(\sqrt[3]{1 + x} + \sqrt[3]{x}, \sqrt[3]{1 + x}, {x}^{\frac{2}{3}}\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019303 +o rules:numerics
(FPCore (x)
  :name "2cbrt (problem 3.3.4)"
  :precision binary64
  (- (cbrt (+ x 1)) (cbrt x)))