Average Error: 29.8 → 15.3
Time: 1.0m
Precision: 64
\[\sqrt[3]{x + 1} - \sqrt[3]{x}\]
\[\begin{array}{l} \mathbf{if}\;\sqrt[3]{1 + x} - \sqrt[3]{x} \le 0.00013239014950272576:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{9}, \left(\sqrt[3]{\frac{1}{{x}^{5}}}\right), \left(\mathsf{fma}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{1}{x \cdot x}}\right), \left(\sqrt[3]{\frac{1}{\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)}} \cdot \frac{5}{81}\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{1 + x} - \sqrt[3]{\left(\left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)}\\ \end{array}\]
\sqrt[3]{x + 1} - \sqrt[3]{x}
\begin{array}{l}
\mathbf{if}\;\sqrt[3]{1 + x} - \sqrt[3]{x} \le 0.00013239014950272576:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{9}, \left(\sqrt[3]{\frac{1}{{x}^{5}}}\right), \left(\mathsf{fma}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{1}{x \cdot x}}\right), \left(\sqrt[3]{\frac{1}{\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)}} \cdot \frac{5}{81}\right)\right)\right)\right)\\

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

\end{array}
double f(double x) {
        double r4809154 = x;
        double r4809155 = 1.0;
        double r4809156 = r4809154 + r4809155;
        double r4809157 = cbrt(r4809156);
        double r4809158 = cbrt(r4809154);
        double r4809159 = r4809157 - r4809158;
        return r4809159;
}

double f(double x) {
        double r4809160 = 1.0;
        double r4809161 = x;
        double r4809162 = r4809160 + r4809161;
        double r4809163 = cbrt(r4809162);
        double r4809164 = cbrt(r4809161);
        double r4809165 = r4809163 - r4809164;
        double r4809166 = 0.00013239014950272576;
        bool r4809167 = r4809165 <= r4809166;
        double r4809168 = -0.1111111111111111;
        double r4809169 = 5.0;
        double r4809170 = pow(r4809161, r4809169);
        double r4809171 = r4809160 / r4809170;
        double r4809172 = cbrt(r4809171);
        double r4809173 = 0.3333333333333333;
        double r4809174 = r4809161 * r4809161;
        double r4809175 = r4809160 / r4809174;
        double r4809176 = cbrt(r4809175);
        double r4809177 = r4809174 * r4809174;
        double r4809178 = r4809177 * r4809177;
        double r4809179 = r4809160 / r4809178;
        double r4809180 = cbrt(r4809179);
        double r4809181 = 0.06172839506172839;
        double r4809182 = r4809180 * r4809181;
        double r4809183 = fma(r4809173, r4809176, r4809182);
        double r4809184 = fma(r4809168, r4809172, r4809183);
        double r4809185 = cbrt(r4809164);
        double r4809186 = r4809185 * r4809185;
        double r4809187 = r4809186 * r4809185;
        double r4809188 = r4809164 * r4809164;
        double r4809189 = r4809187 * r4809188;
        double r4809190 = cbrt(r4809189);
        double r4809191 = r4809163 - r4809190;
        double r4809192 = r4809167 ? r4809184 : r4809191;
        return r4809192;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if (- (cbrt (+ x 1)) (cbrt x)) < 0.00013239014950272576

    1. Initial program 60.4

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

      \[\leadsto \sqrt[3]{x + 1} - \color{blue}{\sqrt[3]{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}\]
    4. Taylor expanded around inf 38.4

      \[\leadsto \color{blue}{\left(\frac{1}{3} \cdot {\left(\frac{1}{{x}^{2}}\right)}^{\frac{1}{3}} + \frac{5}{81} \cdot {\left(\frac{1}{{x}^{8}}\right)}^{\frac{1}{3}}\right) - \frac{1}{9} \cdot {\left(\frac{1}{{x}^{5}}\right)}^{\frac{1}{3}}}\]
    5. Simplified30.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{-1}{9}, \left(\sqrt[3]{\frac{1}{{x}^{5}}}\right), \left(\mathsf{fma}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{1}{x \cdot x}}\right), \left(\sqrt[3]{\frac{1}{\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)}} \cdot \frac{5}{81}\right)\right)\right)\right)}\]

    if 0.00013239014950272576 < (- (cbrt (+ x 1)) (cbrt x))

    1. Initial program 0.2

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

      \[\leadsto \sqrt[3]{x + 1} - \color{blue}{\sqrt[3]{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt0.2

      \[\leadsto \sqrt[3]{x + 1} - \sqrt[3]{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \sqrt[3]{\sqrt[3]{x}}\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification15.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\sqrt[3]{1 + x} - \sqrt[3]{x} \le 0.00013239014950272576:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{9}, \left(\sqrt[3]{\frac{1}{{x}^{5}}}\right), \left(\mathsf{fma}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{1}{x \cdot x}}\right), \left(\sqrt[3]{\frac{1}{\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)}} \cdot \frac{5}{81}\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{1 + x} - \sqrt[3]{\left(\left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)}\\ \end{array}\]

Reproduce

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