\sqrt[3]{x + 1} - \sqrt[3]{x}\begin{array}{l}
\mathbf{if}\;x \le -4.4628901123669468 \cdot 10^{61} \lor \neg \left(x \le 3285.3368488500055\right):\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{fma}\left({\left(\frac{1}{{x}^{2}}\right)}^{\frac{1}{3}}, 0.333333333333333315, 0.061728395061728392 \cdot {\left(\frac{1}{{x}^{8}}\right)}^{\frac{1}{3}} - 0.1111111111111111 \cdot {\left(\frac{1}{{x}^{5}}\right)}^{\frac{1}{3}}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\sqrt[3]{\frac{\sqrt[3]{{x}^{3} + {1}^{3}} \cdot \sqrt[3]{x \cdot x - 1 \cdot 1}}{\sqrt[3]{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)} \cdot \sqrt[3]{x - 1}}}, \sqrt[3]{\sqrt[3]{x + 1}}, -\sqrt[3]{x}\right)\\
\end{array}double f(double x) {
double r61085 = x;
double r61086 = 1.0;
double r61087 = r61085 + r61086;
double r61088 = cbrt(r61087);
double r61089 = cbrt(r61085);
double r61090 = r61088 - r61089;
return r61090;
}
double f(double x) {
double r61091 = x;
double r61092 = -4.462890112366947e+61;
bool r61093 = r61091 <= r61092;
double r61094 = 3285.3368488500055;
bool r61095 = r61091 <= r61094;
double r61096 = !r61095;
bool r61097 = r61093 || r61096;
double r61098 = 1.0;
double r61099 = 2.0;
double r61100 = pow(r61091, r61099);
double r61101 = r61098 / r61100;
double r61102 = 0.3333333333333333;
double r61103 = pow(r61101, r61102);
double r61104 = 0.3333333333333333;
double r61105 = 0.06172839506172839;
double r61106 = 8.0;
double r61107 = pow(r61091, r61106);
double r61108 = r61098 / r61107;
double r61109 = pow(r61108, r61102);
double r61110 = r61105 * r61109;
double r61111 = 0.1111111111111111;
double r61112 = 5.0;
double r61113 = pow(r61091, r61112);
double r61114 = r61098 / r61113;
double r61115 = pow(r61114, r61102);
double r61116 = r61111 * r61115;
double r61117 = r61110 - r61116;
double r61118 = fma(r61103, r61104, r61117);
double r61119 = log1p(r61118);
double r61120 = expm1(r61119);
double r61121 = 3.0;
double r61122 = pow(r61091, r61121);
double r61123 = 1.0;
double r61124 = pow(r61123, r61121);
double r61125 = r61122 + r61124;
double r61126 = cbrt(r61125);
double r61127 = r61091 * r61091;
double r61128 = r61123 * r61123;
double r61129 = r61127 - r61128;
double r61130 = cbrt(r61129);
double r61131 = r61126 * r61130;
double r61132 = r61091 * r61123;
double r61133 = r61128 - r61132;
double r61134 = r61127 + r61133;
double r61135 = cbrt(r61134);
double r61136 = r61091 - r61123;
double r61137 = cbrt(r61136);
double r61138 = r61135 * r61137;
double r61139 = r61131 / r61138;
double r61140 = cbrt(r61139);
double r61141 = r61091 + r61123;
double r61142 = cbrt(r61141);
double r61143 = cbrt(r61142);
double r61144 = cbrt(r61091);
double r61145 = -r61144;
double r61146 = fma(r61140, r61143, r61145);
double r61147 = r61097 ? r61120 : r61146;
return r61147;
}



Bits error versus x
if x < -4.462890112366947e+61 or 3285.3368488500055 < x Initial program 60.6
rmApplied expm1-log1p-u60.6
Taylor expanded around inf 36.7
Simplified36.7
if -4.462890112366947e+61 < x < 3285.3368488500055Initial program 4.5
rmApplied add-cube-cbrt4.5
Applied cbrt-prod4.5
Applied fma-neg4.5
rmApplied flip-+4.5
Applied cbrt-div4.5
Applied flip3-+4.5
Applied cbrt-div4.4
Applied frac-times4.4
Final simplification18.9
herbie shell --seed 2020062 +o rules:numerics
(FPCore (x)
:name "2cbrt (problem 3.3.4)"
:precision binary64
(- (cbrt (+ x 1)) (cbrt x)))