Average Error: 29.6 → 18.5
Time: 7.4s
Precision: 64
\[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -4.44550295877382874955346526182022673206 \cdot 10^{61} \lor \neg \left(x \le 3214.257238783484808664070442318916320801\right):\\ \;\;\;\;\mathsf{fma}\left({\left(\frac{1}{{x}^{2}}\right)}^{\frac{1}{3}}, 0.3333333333333333148296162562473909929395, 0.06172839506172839163511412152729462832212 \cdot {\left(\frac{1}{{x}^{8}}\right)}^{\frac{1}{3}} - 0.1111111111111111049432054187491303309798 \cdot {\left(\frac{1}{{x}^{5}}\right)}^{\frac{1}{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{\frac{\sqrt[3]{{x}^{3} + {1}^{3}} \cdot \sqrt[3]{{x}^{3} + {1}^{3}}}{\sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)} \cdot \sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\\ \end{array}\]
\sqrt[3]{x + 1} - \sqrt[3]{x}
\begin{array}{l}
\mathbf{if}\;x \le -4.44550295877382874955346526182022673206 \cdot 10^{61} \lor \neg \left(x \le 3214.257238783484808664070442318916320801\right):\\
\;\;\;\;\mathsf{fma}\left({\left(\frac{1}{{x}^{2}}\right)}^{\frac{1}{3}}, 0.3333333333333333148296162562473909929395, 0.06172839506172839163511412152729462832212 \cdot {\left(\frac{1}{{x}^{8}}\right)}^{\frac{1}{3}} - 0.1111111111111111049432054187491303309798 \cdot {\left(\frac{1}{{x}^{5}}\right)}^{\frac{1}{3}}\right)\\

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

\end{array}
double f(double x) {
        double r81607 = x;
        double r81608 = 1.0;
        double r81609 = r81607 + r81608;
        double r81610 = cbrt(r81609);
        double r81611 = cbrt(r81607);
        double r81612 = r81610 - r81611;
        return r81612;
}

double f(double x) {
        double r81613 = x;
        double r81614 = -4.445502958773829e+61;
        bool r81615 = r81613 <= r81614;
        double r81616 = 3214.257238783485;
        bool r81617 = r81613 <= r81616;
        double r81618 = !r81617;
        bool r81619 = r81615 || r81618;
        double r81620 = 1.0;
        double r81621 = 2.0;
        double r81622 = pow(r81613, r81621);
        double r81623 = r81620 / r81622;
        double r81624 = 0.3333333333333333;
        double r81625 = pow(r81623, r81624);
        double r81626 = 0.3333333333333333;
        double r81627 = 0.06172839506172839;
        double r81628 = 8.0;
        double r81629 = pow(r81613, r81628);
        double r81630 = r81620 / r81629;
        double r81631 = pow(r81630, r81624);
        double r81632 = r81627 * r81631;
        double r81633 = 0.1111111111111111;
        double r81634 = 5.0;
        double r81635 = pow(r81613, r81634);
        double r81636 = r81620 / r81635;
        double r81637 = pow(r81636, r81624);
        double r81638 = r81633 * r81637;
        double r81639 = r81632 - r81638;
        double r81640 = fma(r81625, r81626, r81639);
        double r81641 = 3.0;
        double r81642 = pow(r81613, r81641);
        double r81643 = 1.0;
        double r81644 = pow(r81643, r81641);
        double r81645 = r81642 + r81644;
        double r81646 = cbrt(r81645);
        double r81647 = r81646 * r81646;
        double r81648 = r81613 * r81613;
        double r81649 = r81643 * r81643;
        double r81650 = r81613 * r81643;
        double r81651 = r81649 - r81650;
        double r81652 = r81648 + r81651;
        double r81653 = cbrt(r81652);
        double r81654 = r81653 * r81653;
        double r81655 = r81647 / r81654;
        double r81656 = cbrt(r81655);
        double r81657 = r81613 + r81643;
        double r81658 = cbrt(r81657);
        double r81659 = cbrt(r81658);
        double r81660 = cbrt(r81613);
        double r81661 = -r81660;
        double r81662 = fma(r81656, r81659, r81661);
        double r81663 = r81619 ? r81640 : r81662;
        return r81663;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -4.445502958773829e+61 or 3214.257238783485 < x

    1. Initial program 60.7

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

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

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

    if -4.445502958773829e+61 < x < 3214.257238783485

    1. Initial program 4.7

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

      \[\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-prod4.7

      \[\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-neg4.7

      \[\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 flip3-+4.7

      \[\leadsto \mathsf{fma}\left(\sqrt[3]{\sqrt[3]{x + 1} \cdot \sqrt[3]{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\]
    8. Applied cbrt-div4.6

      \[\leadsto \mathsf{fma}\left(\sqrt[3]{\sqrt[3]{x + 1} \cdot \color{blue}{\frac{\sqrt[3]{{x}^{3} + {1}^{3}}}{\sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\]
    9. Applied flip3-+4.6

      \[\leadsto \mathsf{fma}\left(\sqrt[3]{\sqrt[3]{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} \cdot \frac{\sqrt[3]{{x}^{3} + {1}^{3}}}{\sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\]
    10. Applied cbrt-div4.6

      \[\leadsto \mathsf{fma}\left(\sqrt[3]{\color{blue}{\frac{\sqrt[3]{{x}^{3} + {1}^{3}}}{\sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} \cdot \frac{\sqrt[3]{{x}^{3} + {1}^{3}}}{\sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\]
    11. Applied frac-times4.6

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

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

Reproduce

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