Average Error: 29.9 → 8.9
Time: 9.0s
Precision: 64
\[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -3435.29454990893873:\\ \;\;\;\;\mathsf{fma}\left(0.333333333333333315, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.061728395061728392\right) - 0.1111111111111111 \cdot \sqrt[3]{\frac{1}{{x}^{5}}}\\ \mathbf{elif}\;x \le 0.10532502913683747:\\ \;\;\;\;\frac{\sqrt[3]{x \cdot x - 1 \cdot 1}}{\sqrt[3]{x - 1}} - \sqrt[3]{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{{x}^{\frac{2}{3}} + \sqrt[3]{x + 1} \cdot \left(\sqrt[3]{x + 1} + \sqrt[3]{x}\right)}\\ \end{array}\]
\sqrt[3]{x + 1} - \sqrt[3]{x}
\begin{array}{l}
\mathbf{if}\;x \le -3435.29454990893873:\\
\;\;\;\;\mathsf{fma}\left(0.333333333333333315, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.061728395061728392\right) - 0.1111111111111111 \cdot \sqrt[3]{\frac{1}{{x}^{5}}}\\

\mathbf{elif}\;x \le 0.10532502913683747:\\
\;\;\;\;\frac{\sqrt[3]{x \cdot x - 1 \cdot 1}}{\sqrt[3]{x - 1}} - \sqrt[3]{x}\\

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

\end{array}
double f(double x) {
        double r74330 = x;
        double r74331 = 1.0;
        double r74332 = r74330 + r74331;
        double r74333 = cbrt(r74332);
        double r74334 = cbrt(r74330);
        double r74335 = r74333 - r74334;
        return r74335;
}

double f(double x) {
        double r74336 = x;
        double r74337 = -3435.2945499089387;
        bool r74338 = r74336 <= r74337;
        double r74339 = 0.3333333333333333;
        double r74340 = 1.0;
        double r74341 = 2.0;
        double r74342 = pow(r74336, r74341);
        double r74343 = r74340 / r74342;
        double r74344 = cbrt(r74343);
        double r74345 = 8.0;
        double r74346 = pow(r74336, r74345);
        double r74347 = r74340 / r74346;
        double r74348 = cbrt(r74347);
        double r74349 = 0.06172839506172839;
        double r74350 = r74348 * r74349;
        double r74351 = fma(r74339, r74344, r74350);
        double r74352 = 0.1111111111111111;
        double r74353 = 5.0;
        double r74354 = pow(r74336, r74353);
        double r74355 = r74340 / r74354;
        double r74356 = cbrt(r74355);
        double r74357 = r74352 * r74356;
        double r74358 = r74351 - r74357;
        double r74359 = 0.10532502913683747;
        bool r74360 = r74336 <= r74359;
        double r74361 = r74336 * r74336;
        double r74362 = 1.0;
        double r74363 = r74362 * r74362;
        double r74364 = r74361 - r74363;
        double r74365 = cbrt(r74364);
        double r74366 = r74336 - r74362;
        double r74367 = cbrt(r74366);
        double r74368 = r74365 / r74367;
        double r74369 = cbrt(r74336);
        double r74370 = r74368 - r74369;
        double r74371 = 0.6666666666666666;
        double r74372 = pow(r74336, r74371);
        double r74373 = r74336 + r74362;
        double r74374 = cbrt(r74373);
        double r74375 = r74374 + r74369;
        double r74376 = r74374 * r74375;
        double r74377 = r74372 + r74376;
        double r74378 = r74362 / r74377;
        double r74379 = r74360 ? r74370 : r74378;
        double r74380 = r74338 ? r74358 : r74379;
        return r74380;
}

Error

Bits error versus x

Derivation

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

    1. Initial program 60.2

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

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

      \[\leadsto \sqrt[3]{\color{blue}{{\left(\sqrt[3]{x + 1} - \sqrt[3]{x}\right)}^{3}}}\]
    5. Taylor expanded around inf 44.9

      \[\leadsto \color{blue}{\left(0.333333333333333315 \cdot {\left(\frac{1}{{x}^{2}}\right)}^{\frac{1}{3}} + 0.061728395061728392 \cdot {\left(\frac{1}{{x}^{8}}\right)}^{\frac{1}{3}}\right) - 0.1111111111111111 \cdot {\left(\frac{1}{{x}^{5}}\right)}^{\frac{1}{3}}}\]
    6. Simplified30.7

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

    if -3435.2945499089387 < x < 0.10532502913683747

    1. Initial program 0.1

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

      \[\leadsto \sqrt[3]{\color{blue}{\frac{x \cdot x - 1 \cdot 1}{x - 1}}} - \sqrt[3]{x}\]
    4. Applied cbrt-div0.1

      \[\leadsto \color{blue}{\frac{\sqrt[3]{x \cdot x - 1 \cdot 1}}{\sqrt[3]{x - 1}}} - \sqrt[3]{x}\]

    if 0.10532502913683747 < x

    1. Initial program 59.5

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

      \[\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}{1 + 0}}{\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{1 + 0}{\color{blue}{{x}^{\frac{2}{3}} + \sqrt[3]{x + 1} \cdot \left(\sqrt[3]{x + 1} + \sqrt[3]{x}\right)}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -3435.29454990893873:\\ \;\;\;\;\mathsf{fma}\left(0.333333333333333315, \sqrt[3]{\frac{1}{{x}^{2}}}, \sqrt[3]{\frac{1}{{x}^{8}}} \cdot 0.061728395061728392\right) - 0.1111111111111111 \cdot \sqrt[3]{\frac{1}{{x}^{5}}}\\ \mathbf{elif}\;x \le 0.10532502913683747:\\ \;\;\;\;\frac{\sqrt[3]{x \cdot x - 1 \cdot 1}}{\sqrt[3]{x - 1}} - \sqrt[3]{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{{x}^{\frac{2}{3}} + \sqrt[3]{x + 1} \cdot \left(\sqrt[3]{x + 1} + \sqrt[3]{x}\right)}\\ \end{array}\]

Reproduce

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