Average Error: 29.3 → 8.7
Time: 12.3s
Precision: 64
\[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.995295059253408442856425608624704182148:\\ \;\;\;\;\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.001027884863765269989055450849946282687597:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{\sqrt{x + 1}}, \sqrt[3]{\sqrt{x + 1}}, -\sqrt[3]{-x} \cdot \sqrt[3]{-1}\right) + \sqrt[3]{-x} \cdot \left(\left(-\sqrt[3]{-1}\right) + \sqrt[3]{-1}\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 -0.995295059253408442856425608624704182148:\\
\;\;\;\;\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.001027884863765269989055450849946282687597:\\
\;\;\;\;\mathsf{fma}\left(\sqrt[3]{\sqrt{x + 1}}, \sqrt[3]{\sqrt{x + 1}}, -\sqrt[3]{-x} \cdot \sqrt[3]{-1}\right) + \sqrt[3]{-x} \cdot \left(\left(-\sqrt[3]{-1}\right) + \sqrt[3]{-1}\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 r81149 = x;
        double r81150 = 1.0;
        double r81151 = r81149 + r81150;
        double r81152 = cbrt(r81151);
        double r81153 = cbrt(r81149);
        double r81154 = r81152 - r81153;
        return r81154;
}

double f(double x) {
        double r81155 = x;
        double r81156 = -0.9952950592534084;
        bool r81157 = r81155 <= r81156;
        double r81158 = 0.3333333333333333;
        double r81159 = 1.0;
        double r81160 = 2.0;
        double r81161 = pow(r81155, r81160);
        double r81162 = r81159 / r81161;
        double r81163 = cbrt(r81162);
        double r81164 = 8.0;
        double r81165 = pow(r81155, r81164);
        double r81166 = r81159 / r81165;
        double r81167 = cbrt(r81166);
        double r81168 = 0.06172839506172839;
        double r81169 = r81167 * r81168;
        double r81170 = fma(r81158, r81163, r81169);
        double r81171 = 5.0;
        double r81172 = pow(r81155, r81171);
        double r81173 = r81159 / r81172;
        double r81174 = cbrt(r81173);
        double r81175 = 0.1111111111111111;
        double r81176 = r81174 * r81175;
        double r81177 = r81170 - r81176;
        double r81178 = 0.00102788486376527;
        bool r81179 = r81155 <= r81178;
        double r81180 = 1.0;
        double r81181 = r81155 + r81180;
        double r81182 = sqrt(r81181);
        double r81183 = cbrt(r81182);
        double r81184 = -r81155;
        double r81185 = cbrt(r81184);
        double r81186 = -1.0;
        double r81187 = cbrt(r81186);
        double r81188 = r81185 * r81187;
        double r81189 = -r81188;
        double r81190 = fma(r81183, r81183, r81189);
        double r81191 = -r81187;
        double r81192 = r81191 + r81187;
        double r81193 = r81185 * r81192;
        double r81194 = r81190 + r81193;
        double r81195 = r81180 + r81155;
        double r81196 = cbrt(r81195);
        double r81197 = cbrt(r81155);
        double r81198 = r81196 + r81197;
        double r81199 = 0.6666666666666666;
        double r81200 = pow(r81155, r81199);
        double r81201 = fma(r81198, r81196, r81200);
        double r81202 = r81180 / r81201;
        double r81203 = r81179 ? r81194 : r81202;
        double r81204 = r81157 ? r81177 : r81203;
        return r81204;
}

Error

Bits error versus x

Derivation

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

    1. Initial program 59.8

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

      \[\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. Simplified30.6

      \[\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 -0.9952950592534084 < x < 0.00102788486376527

    1. Initial program 0.0

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

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

      \[\leadsto \sqrt[3]{x + 1} - \color{blue}{\sqrt[3]{-1} \cdot \sqrt[3]{-x}}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt0.0

      \[\leadsto \sqrt[3]{\color{blue}{\sqrt{x + 1} \cdot \sqrt{x + 1}}} - \sqrt[3]{-1} \cdot \sqrt[3]{-x}\]
    6. Applied cbrt-prod0.0

      \[\leadsto \color{blue}{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}} - \sqrt[3]{-1} \cdot \sqrt[3]{-x}\]
    7. Applied prod-diff0.0

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

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

    if 0.00102788486376527 < x

    1. Initial program 59.2

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.995295059253408442856425608624704182148:\\ \;\;\;\;\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.001027884863765269989055450849946282687597:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{\sqrt{x + 1}}, \sqrt[3]{\sqrt{x + 1}}, -\sqrt[3]{-x} \cdot \sqrt[3]{-1}\right) + \sqrt[3]{-x} \cdot \left(\left(-\sqrt[3]{-1}\right) + \sqrt[3]{-1}\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 2019350 +o rules:numerics
(FPCore (x)
  :name "2cbrt (problem 3.3.4)"
  :precision binary64
  (- (cbrt (+ x 1)) (cbrt x)))