2cbrt (problem 3.3.4)

Percentage Accurate: 6.9% → 97.1%
Time: 9.4s
Alternatives: 4
Speedup: 2.0×

Specification

?
\[x > 1 \land x < 10^{+308}\]
\[\begin{array}{l} \\ \sqrt[3]{x + 1} - \sqrt[3]{x} \end{array} \]
(FPCore (x) :precision binary64 (- (cbrt (+ x 1.0)) (cbrt x)))
double code(double x) {
	return cbrt((x + 1.0)) - cbrt(x);
}
public static double code(double x) {
	return Math.cbrt((x + 1.0)) - Math.cbrt(x);
}
function code(x)
	return Float64(cbrt(Float64(x + 1.0)) - cbrt(x))
end
code[x_] := N[(N[Power[N[(x + 1.0), $MachinePrecision], 1/3], $MachinePrecision] - N[Power[x, 1/3], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\sqrt[3]{x + 1} - \sqrt[3]{x}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 4 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 6.9% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \sqrt[3]{x + 1} - \sqrt[3]{x} \end{array} \]
(FPCore (x) :precision binary64 (- (cbrt (+ x 1.0)) (cbrt x)))
double code(double x) {
	return cbrt((x + 1.0)) - cbrt(x);
}
public static double code(double x) {
	return Math.cbrt((x + 1.0)) - Math.cbrt(x);
}
function code(x)
	return Float64(cbrt(Float64(x + 1.0)) - cbrt(x))
end
code[x_] := N[(N[Power[N[(x + 1.0), $MachinePrecision], 1/3], $MachinePrecision] - N[Power[x, 1/3], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\sqrt[3]{x + 1} - \sqrt[3]{x}
\end{array}

Alternative 1: 97.1% accurate, 2.0× speedup?

\[\begin{array}{l} \\ \frac{\sqrt[3]{x}}{x} \cdot 0.3333333333333333 \end{array} \]
(FPCore (x) :precision binary64 (* (/ (cbrt x) x) 0.3333333333333333))
double code(double x) {
	return (cbrt(x) / x) * 0.3333333333333333;
}
public static double code(double x) {
	return (Math.cbrt(x) / x) * 0.3333333333333333;
}
function code(x)
	return Float64(Float64(cbrt(x) / x) * 0.3333333333333333)
end
code[x_] := N[(N[(N[Power[x, 1/3], $MachinePrecision] / x), $MachinePrecision] * 0.3333333333333333), $MachinePrecision]
\begin{array}{l}

\\
\frac{\sqrt[3]{x}}{x} \cdot 0.3333333333333333
\end{array}
Derivation
  1. Initial program 5.3%

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

    \[\leadsto \color{blue}{\frac{1}{3} \cdot \sqrt[3]{\frac{1}{{x}^{2}}}} \]
  4. Step-by-step derivation
    1. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \color{blue}{\left(\sqrt[3]{\frac{1}{{x}^{2}}}\right)}\right) \]
    2. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{-1 \cdot -1}{{x}^{2}}}\right)\right) \]
    3. associate-*r/N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{-1 \cdot \frac{-1}{{x}^{2}}}\right)\right) \]
    4. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(-1 \cdot \frac{-1}{{x}^{2}}\right)\right)\right) \]
    5. associate-*r/N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(\frac{-1 \cdot -1}{{x}^{2}}\right)\right)\right) \]
    6. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(\frac{1}{{x}^{2}}\right)\right)\right) \]
    7. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left({x}^{2}\right)\right)\right)\right) \]
    8. unpow2N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left(x \cdot x\right)\right)\right)\right) \]
    9. *-lowering-*.f6448.1%

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right) \]
  5. Simplified48.1%

    \[\leadsto \color{blue}{0.3333333333333333 \cdot \sqrt[3]{\frac{1}{x \cdot x}}} \]
  6. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \sqrt[3]{\frac{1}{x \cdot x}} \cdot \color{blue}{\frac{1}{3}} \]
    2. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\sqrt[3]{\frac{1}{x \cdot x}}\right), \color{blue}{\frac{1}{3}}\right) \]
    3. cbrt-divN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x \cdot x}}\right), \frac{1}{3}\right) \]
    4. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\sqrt[3]{x \cdot x}}\right), \frac{1}{3}\right) \]
    5. pow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{{\left(x \cdot x\right)}^{\frac{1}{3}}}\right), \frac{1}{3}\right) \]
    6. pow-flipN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(x \cdot x\right)}^{\left(\mathsf{neg}\left(\frac{1}{3}\right)\right)}\right), \frac{1}{3}\right) \]
    7. pow2N/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left({x}^{2}\right)}^{\left(\mathsf{neg}\left(\frac{1}{3}\right)\right)}\right), \frac{1}{3}\right) \]
    8. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({x}^{\left(2 \cdot \left(\mathsf{neg}\left(\frac{1}{3}\right)\right)\right)}\right), \frac{1}{3}\right) \]
    9. pow-lowering-pow.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{pow.f64}\left(x, \left(2 \cdot \left(\mathsf{neg}\left(\frac{1}{3}\right)\right)\right)\right), \frac{1}{3}\right) \]
    10. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{pow.f64}\left(x, \left(2 \cdot \frac{-1}{3}\right)\right), \frac{1}{3}\right) \]
    11. metadata-eval89.8%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{pow.f64}\left(x, \frac{-2}{3}\right), \frac{1}{3}\right) \]
  7. Applied egg-rr89.8%

    \[\leadsto \color{blue}{{x}^{-0.6666666666666666} \cdot 0.3333333333333333} \]
  8. Step-by-step derivation
    1. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left({x}^{\left(-1 \cdot \frac{2}{3}\right)}\right), \frac{1}{3}\right) \]
    2. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left({x}^{\left(-1 \cdot \left(2 \cdot \frac{1}{3}\right)\right)}\right), \frac{1}{3}\right) \]
    3. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left({x}^{-1}\right)}^{\left(2 \cdot \frac{1}{3}\right)}\right), \frac{1}{3}\right) \]
    4. inv-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(\frac{1}{x}\right)}^{\left(2 \cdot \frac{1}{3}\right)}\right), \frac{1}{3}\right) \]
    5. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left({\left(\frac{1}{x}\right)}^{2}\right)}^{\frac{1}{3}}\right), \frac{1}{3}\right) \]
    6. pow2N/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(\frac{1}{x} \cdot \frac{1}{x}\right)}^{\frac{1}{3}}\right), \frac{1}{3}\right) \]
    7. un-div-invN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(\frac{\frac{1}{x}}{x}\right)}^{\frac{1}{3}}\right), \frac{1}{3}\right) \]
    8. frac-2negN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(\frac{\mathsf{neg}\left(\frac{1}{x}\right)}{\mathsf{neg}\left(x\right)}\right)}^{\frac{1}{3}}\right), \frac{1}{3}\right) \]
    9. pow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\sqrt[3]{\frac{\mathsf{neg}\left(\frac{1}{x}\right)}{\mathsf{neg}\left(x\right)}}\right), \frac{1}{3}\right) \]
    10. cbrt-undivN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}}{\sqrt[3]{\mathsf{neg}\left(x\right)}}\right), \frac{1}{3}\right) \]
    11. clear-numN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\frac{\sqrt[3]{\mathsf{neg}\left(x\right)}}{\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}}}\right), \frac{1}{3}\right) \]
    12. inv-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(\frac{\sqrt[3]{\mathsf{neg}\left(x\right)}}{\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}}\right)}^{-1}\right), \frac{1}{3}\right) \]
    13. pow-to-expN/A

      \[\leadsto \mathsf{*.f64}\left(\left(e^{\log \left(\frac{\sqrt[3]{\mathsf{neg}\left(x\right)}}{\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}}\right) \cdot -1}\right), \frac{1}{3}\right) \]
    14. exp-lowering-exp.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\left(\log \left(\frac{\sqrt[3]{\mathsf{neg}\left(x\right)}}{\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}}\right) \cdot -1\right)\right), \frac{1}{3}\right) \]
    15. cbrt-undivN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\left(\log \left(\sqrt[3]{\frac{\mathsf{neg}\left(x\right)}{\mathsf{neg}\left(\frac{1}{x}\right)}}\right) \cdot -1\right)\right), \frac{1}{3}\right) \]
    16. frac-2negN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\left(\log \left(\sqrt[3]{\frac{x}{\frac{1}{x}}}\right) \cdot -1\right)\right), \frac{1}{3}\right) \]
    17. div-invN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\left(\log \left(\sqrt[3]{x \cdot \frac{1}{\frac{1}{x}}}\right) \cdot -1\right)\right), \frac{1}{3}\right) \]
    18. remove-double-divN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\left(\log \left(\sqrt[3]{x \cdot x}\right) \cdot -1\right)\right), \frac{1}{3}\right) \]
    19. cbrt-unprodN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot -1\right)\right), \frac{1}{3}\right) \]
    20. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{exp.f64}\left(\mathsf{*.f64}\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right), -1\right)\right), \frac{1}{3}\right) \]
  9. Applied egg-rr90.4%

    \[\leadsto \color{blue}{e^{\log \left({x}^{0.6666666666666666}\right) \cdot -1}} \cdot 0.3333333333333333 \]
  10. Step-by-step derivation
    1. exp-to-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left({x}^{\frac{2}{3}}\right)}^{-1}\right), \frac{1}{3}\right) \]
    2. inv-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{{x}^{\frac{2}{3}}}\right), \frac{1}{3}\right) \]
    3. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{{x}^{\left(2 - \frac{4}{3}\right)}}\right), \frac{1}{3}\right) \]
    4. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{{x}^{\left(2 - 4 \cdot \frac{1}{3}\right)}}\right), \frac{1}{3}\right) \]
    5. pow-divN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\frac{{x}^{2}}{{x}^{\left(4 \cdot \frac{1}{3}\right)}}}\right), \frac{1}{3}\right) \]
    6. pow2N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\frac{x \cdot x}{{x}^{\left(4 \cdot \frac{1}{3}\right)}}}\right), \frac{1}{3}\right) \]
    7. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\frac{x \cdot x}{{\left({x}^{4}\right)}^{\frac{1}{3}}}}\right), \frac{1}{3}\right) \]
    8. pow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\frac{x \cdot x}{\sqrt[3]{{x}^{4}}}}\right), \frac{1}{3}\right) \]
    9. clear-numN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\sqrt[3]{{x}^{4}}}{x \cdot x}\right), \frac{1}{3}\right) \]
    10. associate-/r*N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\frac{\sqrt[3]{{x}^{4}}}{x}}{x}\right), \frac{1}{3}\right) \]
    11. div-invN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\sqrt[3]{{x}^{4}} \cdot \frac{1}{x}}{x}\right), \frac{1}{3}\right) \]
    12. pow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{\left({x}^{4}\right)}^{\frac{1}{3}} \cdot \frac{1}{x}}{x}\right), \frac{1}{3}\right) \]
    13. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{x}^{\left(4 \cdot \frac{1}{3}\right)} \cdot \frac{1}{x}}{x}\right), \frac{1}{3}\right) \]
    14. inv-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{x}^{\left(4 \cdot \frac{1}{3}\right)} \cdot {x}^{-1}}{x}\right), \frac{1}{3}\right) \]
    15. pow-prod-upN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{x}^{\left(4 \cdot \frac{1}{3} + -1\right)}}{x}\right), \frac{1}{3}\right) \]
    16. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{x}^{\left(\frac{4}{3} + -1\right)}}{x}\right), \frac{1}{3}\right) \]
    17. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{x}^{\frac{1}{3}}}{x}\right), \frac{1}{3}\right) \]
    18. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{{x}^{\left(\frac{\frac{2}{3}}{2}\right)}}{x}\right), \frac{1}{3}\right) \]
    19. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left({x}^{\left(\frac{\frac{2}{3}}{2}\right)}\right), x\right), \frac{1}{3}\right) \]
    20. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left({x}^{\frac{1}{3}}\right), x\right), \frac{1}{3}\right) \]
    21. unpow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\sqrt[3]{x}\right), x\right), \frac{1}{3}\right) \]
    22. cbrt-lowering-cbrt.f6498.5%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(x\right), x\right), \frac{1}{3}\right) \]
  11. Applied egg-rr98.5%

    \[\leadsto \color{blue}{\frac{\sqrt[3]{x}}{x}} \cdot 0.3333333333333333 \]
  12. Add Preprocessing

Alternative 2: 97.1% accurate, 2.0× speedup?

\[\begin{array}{l} \\ \sqrt[3]{x} \cdot \frac{0.3333333333333333}{x} \end{array} \]
(FPCore (x) :precision binary64 (* (cbrt x) (/ 0.3333333333333333 x)))
double code(double x) {
	return cbrt(x) * (0.3333333333333333 / x);
}
public static double code(double x) {
	return Math.cbrt(x) * (0.3333333333333333 / x);
}
function code(x)
	return Float64(cbrt(x) * Float64(0.3333333333333333 / x))
end
code[x_] := N[(N[Power[x, 1/3], $MachinePrecision] * N[(0.3333333333333333 / x), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\sqrt[3]{x} \cdot \frac{0.3333333333333333}{x}
\end{array}
Derivation
  1. Initial program 5.3%

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

    \[\leadsto \color{blue}{\frac{1}{3} \cdot \sqrt[3]{\frac{1}{{x}^{2}}}} \]
  4. Step-by-step derivation
    1. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \color{blue}{\left(\sqrt[3]{\frac{1}{{x}^{2}}}\right)}\right) \]
    2. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{-1 \cdot -1}{{x}^{2}}}\right)\right) \]
    3. associate-*r/N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{-1 \cdot \frac{-1}{{x}^{2}}}\right)\right) \]
    4. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(-1 \cdot \frac{-1}{{x}^{2}}\right)\right)\right) \]
    5. associate-*r/N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(\frac{-1 \cdot -1}{{x}^{2}}\right)\right)\right) \]
    6. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(\frac{1}{{x}^{2}}\right)\right)\right) \]
    7. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left({x}^{2}\right)\right)\right)\right) \]
    8. unpow2N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left(x \cdot x\right)\right)\right)\right) \]
    9. *-lowering-*.f6448.1%

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right) \]
  5. Simplified48.1%

    \[\leadsto \color{blue}{0.3333333333333333 \cdot \sqrt[3]{\frac{1}{x \cdot x}}} \]
  6. Step-by-step derivation
    1. associate-/r*N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{\frac{1}{x}}{x}}\right)\right) \]
    2. frac-2negN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{\mathsf{neg}\left(\frac{1}{x}\right)}{\mathsf{neg}\left(x\right)}}\right)\right) \]
    3. cbrt-divN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\frac{\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}}{\color{blue}{\sqrt[3]{\mathsf{neg}\left(x\right)}}}\right)\right) \]
    4. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\left(\sqrt[3]{\mathsf{neg}\left(\frac{1}{x}\right)}\right), \color{blue}{\left(\sqrt[3]{\mathsf{neg}\left(x\right)}\right)}\right)\right) \]
    5. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\mathsf{neg}\left(\frac{1}{x}\right)\right)\right), \left(\sqrt[3]{\color{blue}{\mathsf{neg}\left(x\right)}}\right)\right)\right) \]
    6. neg-lowering-neg.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\left(\frac{1}{x}\right)\right)\right), \left(\sqrt[3]{\mathsf{neg}\left(\color{blue}{x}\right)}\right)\right)\right) \]
    7. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{/.f64}\left(1, x\right)\right)\right), \left(\sqrt[3]{\mathsf{neg}\left(x\right)}\right)\right)\right) \]
    8. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{/.f64}\left(1, x\right)\right)\right), \mathsf{cbrt.f64}\left(\left(\mathsf{neg}\left(x\right)\right)\right)\right)\right) \]
    9. neg-lowering-neg.f6497.8%

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{/.f64}\left(1, x\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
  7. Applied egg-rr97.8%

    \[\leadsto 0.3333333333333333 \cdot \color{blue}{\frac{\sqrt[3]{-\frac{1}{x}}}{\sqrt[3]{-x}}} \]
  8. Step-by-step derivation
    1. inv-powN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\left({x}^{-1}\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    2. rem-cube-cbrtN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\left({\left({\left(\sqrt[3]{x}\right)}^{3}\right)}^{-1}\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    3. sqr-powN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)} \cdot {\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    4. unpow-prod-downN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1} \cdot {\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    5. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    6. pow-lowering-pow.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    7. pow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({\left({x}^{\frac{1}{3}}\right)}^{\left(\frac{3}{2}\right)}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    8. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({x}^{\left(\frac{1}{3} \cdot \frac{3}{2}\right)}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    9. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({x}^{\left(\frac{1}{3} \cdot \frac{3}{2}\right)}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    10. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({x}^{\frac{1}{2}}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    11. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({x}^{\left(3 \cdot \frac{1}{6}\right)}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    12. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\left({x}^{\left(3 \cdot \frac{\frac{1}{3}}{2}\right)}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    13. pow-lowering-pow.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\mathsf{pow.f64}\left(x, \left(3 \cdot \frac{\frac{1}{3}}{2}\right)\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    14. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\mathsf{pow.f64}\left(x, \left(3 \cdot \frac{1}{6}\right)\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    15. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\mathsf{pow.f64}\left(x, \frac{1}{2}\right), -1\right), \left({\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right)}^{-1}\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
    16. pow-lowering-pow.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(\mathsf{pow.f64}\left(x, \frac{1}{2}\right), -1\right), \mathsf{pow.f64}\left(\left({\left(\sqrt[3]{x}\right)}^{\left(\frac{3}{2}\right)}\right), -1\right)\right)\right)\right), \mathsf{cbrt.f64}\left(\mathsf{neg.f64}\left(x\right)\right)\right)\right) \]
  9. Applied egg-rr97.8%

    \[\leadsto 0.3333333333333333 \cdot \frac{\sqrt[3]{-\color{blue}{{\left({x}^{0.5}\right)}^{-1} \cdot {\left({x}^{0.5}\right)}^{-1}}}}{\sqrt[3]{-x}} \]
  10. Step-by-step derivation
    1. cbrt-undivN/A

      \[\leadsto \frac{1}{3} \cdot \sqrt[3]{\frac{\mathsf{neg}\left({\left({x}^{\frac{1}{2}}\right)}^{-1} \cdot {\left({x}^{\frac{1}{2}}\right)}^{-1}\right)}{\mathsf{neg}\left(x\right)}} \]
    2. pow1/3N/A

      \[\leadsto \frac{1}{3} \cdot {\left(\frac{\mathsf{neg}\left({\left({x}^{\frac{1}{2}}\right)}^{-1} \cdot {\left({x}^{\frac{1}{2}}\right)}^{-1}\right)}{\mathsf{neg}\left(x\right)}\right)}^{\color{blue}{\frac{1}{3}}} \]
    3. frac-2negN/A

      \[\leadsto \frac{1}{3} \cdot {\left(\frac{{\left({x}^{\frac{1}{2}}\right)}^{-1} \cdot {\left({x}^{\frac{1}{2}}\right)}^{-1}}{x}\right)}^{\frac{1}{3}} \]
    4. div-invN/A

      \[\leadsto \frac{1}{3} \cdot {\left(\left({\left({x}^{\frac{1}{2}}\right)}^{-1} \cdot {\left({x}^{\frac{1}{2}}\right)}^{-1}\right) \cdot \frac{1}{x}\right)}^{\frac{1}{3}} \]
    5. pow-prod-upN/A

      \[\leadsto \frac{1}{3} \cdot {\left({\left({x}^{\frac{1}{2}}\right)}^{\left(-1 + -1\right)} \cdot \frac{1}{x}\right)}^{\frac{1}{3}} \]
    6. pow-powN/A

      \[\leadsto \frac{1}{3} \cdot {\left({x}^{\left(\frac{1}{2} \cdot \left(-1 + -1\right)\right)} \cdot \frac{1}{x}\right)}^{\frac{1}{3}} \]
    7. metadata-evalN/A

      \[\leadsto \frac{1}{3} \cdot {\left({x}^{\left(\frac{1}{2} \cdot -2\right)} \cdot \frac{1}{x}\right)}^{\frac{1}{3}} \]
    8. metadata-evalN/A

      \[\leadsto \frac{1}{3} \cdot {\left({x}^{-1} \cdot \frac{1}{x}\right)}^{\frac{1}{3}} \]
    9. inv-powN/A

      \[\leadsto \frac{1}{3} \cdot {\left({x}^{-1} \cdot {x}^{-1}\right)}^{\frac{1}{3}} \]
    10. unpow-prod-downN/A

      \[\leadsto \frac{1}{3} \cdot {\left({\left(x \cdot x\right)}^{-1}\right)}^{\frac{1}{3}} \]
    11. unpow-prod-downN/A

      \[\leadsto \frac{1}{3} \cdot {\left({x}^{-1} \cdot {x}^{-1}\right)}^{\frac{1}{3}} \]
    12. pow-prod-upN/A

      \[\leadsto \frac{1}{3} \cdot {\left({x}^{\left(-1 + -1\right)}\right)}^{\frac{1}{3}} \]
    13. pow-powN/A

      \[\leadsto \frac{1}{3} \cdot {x}^{\color{blue}{\left(\left(-1 + -1\right) \cdot \frac{1}{3}\right)}} \]
    14. metadata-evalN/A

      \[\leadsto \frac{1}{3} \cdot {x}^{\left(-2 \cdot \frac{1}{3}\right)} \]
    15. metadata-evalN/A

      \[\leadsto \frac{1}{3} \cdot {x}^{\frac{-2}{3}} \]
    16. metadata-evalN/A

      \[\leadsto \frac{1}{3} \cdot {x}^{\left(\frac{4}{3} - \color{blue}{2}\right)} \]
    17. metadata-evalN/A

      \[\leadsto \frac{1}{3} \cdot {x}^{\left(4 \cdot \frac{1}{3} - 2\right)} \]
    18. pow-divN/A

      \[\leadsto \frac{1}{3} \cdot \frac{{x}^{\left(4 \cdot \frac{1}{3}\right)}}{\color{blue}{{x}^{2}}} \]
    19. pow-powN/A

      \[\leadsto \frac{1}{3} \cdot \frac{{\left({x}^{4}\right)}^{\frac{1}{3}}}{{\color{blue}{x}}^{2}} \]
    20. pow1/3N/A

      \[\leadsto \frac{1}{3} \cdot \frac{\sqrt[3]{{x}^{4}}}{{\color{blue}{x}}^{2}} \]
    21. pow2N/A

      \[\leadsto \frac{1}{3} \cdot \frac{\sqrt[3]{{x}^{4}}}{x \cdot \color{blue}{x}} \]
    22. div-invN/A

      \[\leadsto \frac{1}{3} \cdot \left(\sqrt[3]{{x}^{4}} \cdot \color{blue}{\frac{1}{x \cdot x}}\right) \]
  11. Applied egg-rr98.4%

    \[\leadsto \color{blue}{\frac{0.3333333333333333}{x} \cdot \sqrt[3]{x}} \]
  12. Final simplification98.4%

    \[\leadsto \sqrt[3]{x} \cdot \frac{0.3333333333333333}{x} \]
  13. Add Preprocessing

Alternative 3: 88.8% accurate, 2.0× speedup?

\[\begin{array}{l} \\ 0.3333333333333333 \cdot {x}^{-0.6666666666666666} \end{array} \]
(FPCore (x)
 :precision binary64
 (* 0.3333333333333333 (pow x -0.6666666666666666)))
double code(double x) {
	return 0.3333333333333333 * pow(x, -0.6666666666666666);
}
real(8) function code(x)
    real(8), intent (in) :: x
    code = 0.3333333333333333d0 * (x ** (-0.6666666666666666d0))
end function
public static double code(double x) {
	return 0.3333333333333333 * Math.pow(x, -0.6666666666666666);
}
def code(x):
	return 0.3333333333333333 * math.pow(x, -0.6666666666666666)
function code(x)
	return Float64(0.3333333333333333 * (x ^ -0.6666666666666666))
end
function tmp = code(x)
	tmp = 0.3333333333333333 * (x ^ -0.6666666666666666);
end
code[x_] := N[(0.3333333333333333 * N[Power[x, -0.6666666666666666], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
0.3333333333333333 \cdot {x}^{-0.6666666666666666}
\end{array}
Derivation
  1. Initial program 5.3%

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

    \[\leadsto \color{blue}{\frac{1}{3} \cdot \sqrt[3]{\frac{1}{{x}^{2}}}} \]
  4. Step-by-step derivation
    1. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \color{blue}{\left(\sqrt[3]{\frac{1}{{x}^{2}}}\right)}\right) \]
    2. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{\frac{-1 \cdot -1}{{x}^{2}}}\right)\right) \]
    3. associate-*r/N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \left(\sqrt[3]{-1 \cdot \frac{-1}{{x}^{2}}}\right)\right) \]
    4. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(-1 \cdot \frac{-1}{{x}^{2}}\right)\right)\right) \]
    5. associate-*r/N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(\frac{-1 \cdot -1}{{x}^{2}}\right)\right)\right) \]
    6. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\left(\frac{1}{{x}^{2}}\right)\right)\right) \]
    7. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left({x}^{2}\right)\right)\right)\right) \]
    8. unpow2N/A

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left(x \cdot x\right)\right)\right)\right) \]
    9. *-lowering-*.f6448.1%

      \[\leadsto \mathsf{*.f64}\left(\frac{1}{3}, \mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right) \]
  5. Simplified48.1%

    \[\leadsto \color{blue}{0.3333333333333333 \cdot \sqrt[3]{\frac{1}{x \cdot x}}} \]
  6. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \sqrt[3]{\frac{1}{x \cdot x}} \cdot \color{blue}{\frac{1}{3}} \]
    2. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\sqrt[3]{\frac{1}{x \cdot x}}\right), \color{blue}{\frac{1}{3}}\right) \]
    3. cbrt-divN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\sqrt[3]{1}}{\sqrt[3]{x \cdot x}}\right), \frac{1}{3}\right) \]
    4. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{\sqrt[3]{x \cdot x}}\right), \frac{1}{3}\right) \]
    5. pow1/3N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{{\left(x \cdot x\right)}^{\frac{1}{3}}}\right), \frac{1}{3}\right) \]
    6. pow-flipN/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left(x \cdot x\right)}^{\left(\mathsf{neg}\left(\frac{1}{3}\right)\right)}\right), \frac{1}{3}\right) \]
    7. pow2N/A

      \[\leadsto \mathsf{*.f64}\left(\left({\left({x}^{2}\right)}^{\left(\mathsf{neg}\left(\frac{1}{3}\right)\right)}\right), \frac{1}{3}\right) \]
    8. pow-powN/A

      \[\leadsto \mathsf{*.f64}\left(\left({x}^{\left(2 \cdot \left(\mathsf{neg}\left(\frac{1}{3}\right)\right)\right)}\right), \frac{1}{3}\right) \]
    9. pow-lowering-pow.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{pow.f64}\left(x, \left(2 \cdot \left(\mathsf{neg}\left(\frac{1}{3}\right)\right)\right)\right), \frac{1}{3}\right) \]
    10. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{pow.f64}\left(x, \left(2 \cdot \frac{-1}{3}\right)\right), \frac{1}{3}\right) \]
    11. metadata-eval89.8%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{pow.f64}\left(x, \frac{-2}{3}\right), \frac{1}{3}\right) \]
  7. Applied egg-rr89.8%

    \[\leadsto \color{blue}{{x}^{-0.6666666666666666} \cdot 0.3333333333333333} \]
  8. Final simplification89.8%

    \[\leadsto 0.3333333333333333 \cdot {x}^{-0.6666666666666666} \]
  9. Add Preprocessing

Alternative 4: 1.8% accurate, 2.0× speedup?

\[\begin{array}{l} \\ 1 - \sqrt[3]{x} \end{array} \]
(FPCore (x) :precision binary64 (- 1.0 (cbrt x)))
double code(double x) {
	return 1.0 - cbrt(x);
}
public static double code(double x) {
	return 1.0 - Math.cbrt(x);
}
function code(x)
	return Float64(1.0 - cbrt(x))
end
code[x_] := N[(1.0 - N[Power[x, 1/3], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
1 - \sqrt[3]{x}
\end{array}
Derivation
  1. Initial program 5.3%

    \[\sqrt[3]{x + 1} - \sqrt[3]{x} \]
  2. Add Preprocessing
  3. Taylor expanded in x around 0

    \[\leadsto \color{blue}{1 - \sqrt[3]{x}} \]
  4. Step-by-step derivation
    1. --lowering--.f64N/A

      \[\leadsto \mathsf{\_.f64}\left(1, \color{blue}{\left(\sqrt[3]{x}\right)}\right) \]
    2. cbrt-lowering-cbrt.f641.8%

      \[\leadsto \mathsf{\_.f64}\left(1, \mathsf{cbrt.f64}\left(x\right)\right) \]
  5. Simplified1.8%

    \[\leadsto \color{blue}{1 - \sqrt[3]{x}} \]
  6. Add Preprocessing

Developer Target 1: 98.4% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sqrt[3]{x + 1}\\ \frac{1}{\left(t\_0 \cdot t\_0 + \sqrt[3]{x} \cdot t\_0\right) + \sqrt[3]{x} \cdot \sqrt[3]{x}} \end{array} \end{array} \]
(FPCore (x)
 :precision binary64
 (let* ((t_0 (cbrt (+ x 1.0))))
   (/ 1.0 (+ (+ (* t_0 t_0) (* (cbrt x) t_0)) (* (cbrt x) (cbrt x))))))
double code(double x) {
	double t_0 = cbrt((x + 1.0));
	return 1.0 / (((t_0 * t_0) + (cbrt(x) * t_0)) + (cbrt(x) * cbrt(x)));
}
public static double code(double x) {
	double t_0 = Math.cbrt((x + 1.0));
	return 1.0 / (((t_0 * t_0) + (Math.cbrt(x) * t_0)) + (Math.cbrt(x) * Math.cbrt(x)));
}
function code(x)
	t_0 = cbrt(Float64(x + 1.0))
	return Float64(1.0 / Float64(Float64(Float64(t_0 * t_0) + Float64(cbrt(x) * t_0)) + Float64(cbrt(x) * cbrt(x))))
end
code[x_] := Block[{t$95$0 = N[Power[N[(x + 1.0), $MachinePrecision], 1/3], $MachinePrecision]}, N[(1.0 / N[(N[(N[(t$95$0 * t$95$0), $MachinePrecision] + N[(N[Power[x, 1/3], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision] + N[(N[Power[x, 1/3], $MachinePrecision] * N[Power[x, 1/3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sqrt[3]{x + 1}\\
\frac{1}{\left(t\_0 \cdot t\_0 + \sqrt[3]{x} \cdot t\_0\right) + \sqrt[3]{x} \cdot \sqrt[3]{x}}
\end{array}
\end{array}

Reproduce

?
herbie shell --seed 2024140 
(FPCore (x)
  :name "2cbrt (problem 3.3.4)"
  :precision binary64
  :pre (and (> x 1.0) (< x 1e+308))

  :alt
  (! :herbie-platform default (/ 1 (+ (* (cbrt (+ x 1)) (cbrt (+ x 1))) (* (cbrt x) (cbrt (+ x 1))) (* (cbrt x) (cbrt x)))))

  (- (cbrt (+ x 1.0)) (cbrt x)))