2-ancestry mixing, zero discriminant

Percentage Accurate: 76.3% → 98.7%
Time: 7.6s
Alternatives: 5
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ \sqrt[3]{\frac{g}{2 \cdot a}} \end{array} \]
(FPCore (g a) :precision binary64 (cbrt (/ g (* 2.0 a))))
double code(double g, double a) {
	return cbrt((g / (2.0 * a)));
}
public static double code(double g, double a) {
	return Math.cbrt((g / (2.0 * a)));
}
function code(g, a)
	return cbrt(Float64(g / Float64(2.0 * a)))
end
code[g_, a_] := N[Power[N[(g / N[(2.0 * a), $MachinePrecision]), $MachinePrecision], 1/3], $MachinePrecision]
\begin{array}{l}

\\
\sqrt[3]{\frac{g}{2 \cdot a}}
\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 5 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: 76.3% accurate, 1.0× speedup?

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

\\
\sqrt[3]{\frac{g}{2 \cdot a}}
\end{array}

Alternative 1: 98.7% accurate, 0.5× speedup?

\[\begin{array}{l} \\ \frac{\sqrt[3]{\frac{1}{\frac{2}{g}}}}{\sqrt[3]{a}} \end{array} \]
(FPCore (g a) :precision binary64 (/ (cbrt (/ 1.0 (/ 2.0 g))) (cbrt a)))
double code(double g, double a) {
	return cbrt((1.0 / (2.0 / g))) / cbrt(a);
}
public static double code(double g, double a) {
	return Math.cbrt((1.0 / (2.0 / g))) / Math.cbrt(a);
}
function code(g, a)
	return Float64(cbrt(Float64(1.0 / Float64(2.0 / g))) / cbrt(a))
end
code[g_, a_] := N[(N[Power[N[(1.0 / N[(2.0 / g), $MachinePrecision]), $MachinePrecision], 1/3], $MachinePrecision] / N[Power[a, 1/3], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\sqrt[3]{\frac{1}{\frac{2}{g}}}}{\sqrt[3]{a}}
\end{array}
Derivation
  1. Initial program 80.7%

    \[\sqrt[3]{\frac{g}{2 \cdot a}} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{2 \cdot a}{g}}\right)\right) \]
    2. associate-/r/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{1}{2 \cdot a} \cdot g\right)\right) \]
    3. *-lowering-*.f64N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2 \cdot a}\right), g\right)\right) \]
    4. associate-/r*N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\left(\frac{\frac{1}{2}}{a}\right), g\right)\right) \]
    5. /-lowering-/.f64N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\frac{1}{2}\right), a\right), g\right)\right) \]
    6. metadata-eval80.7%

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(\frac{1}{2}, a\right), g\right)\right) \]
  4. Applied egg-rr80.7%

    \[\leadsto \sqrt[3]{\color{blue}{\frac{0.5}{a} \cdot g}} \]
  5. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \frac{\frac{1}{2}}{a}\right)\right) \]
    2. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \frac{1}{\frac{a}{\frac{1}{2}}}\right)\right) \]
    3. un-div-invN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{g}{\frac{a}{\frac{1}{2}}}\right)\right) \]
    4. frac-2negN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\mathsf{neg}\left(g\right)}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    5. neg-sub0N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{0 - g}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    6. flip3--N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{{0}^{3} - {g}^{3}}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    7. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - {g}^{3}}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    8. mul0-lftN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - {g}^{3}}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    9. cube-unmultN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    10. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    11. mul0-lftN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 + \left(g \cdot g + 0\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    12. +-rgt-identityN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 + g \cdot g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    13. +-lft-identityN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{g \cdot g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    14. frac-subN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0}{g} - \frac{g \cdot g}{g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    15. div-subN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    16. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(\frac{1}{\frac{\frac{1}{2}}{a}}\right)}\right)\right) \]
    17. associate-/r/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(\frac{1}{\frac{1}{2}} \cdot a\right)}\right)\right) \]
    18. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(2 \cdot a\right)}\right)\right) \]
    19. distribute-lft-neg-inN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\left(\mathsf{neg}\left(2\right)\right) \cdot a}\right)\right) \]
    20. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{-2 \cdot a}\right)\right) \]
    21. un-div-invN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{0 - g \cdot g}{g} \cdot \frac{1}{-2 \cdot a}\right)\right) \]
    22. associate-/l/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{0 - g \cdot g}{g} \cdot \frac{\frac{1}{a}}{-2}\right)\right) \]
    23. times-fracN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\left(0 - g \cdot g\right) \cdot \frac{1}{a}}{g \cdot -2}\right)\right) \]
    24. *-commutativeN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\left(0 - g \cdot g\right) \cdot \frac{1}{a}}{-2 \cdot g}\right)\right) \]
  6. Applied egg-rr57.0%

    \[\leadsto \sqrt[3]{\color{blue}{\left(0 - g\right) \cdot \left(g \cdot \frac{\frac{-0.5}{g}}{a}\right)}} \]
  7. Step-by-step derivation
    1. sub0-negN/A

      \[\leadsto \sqrt[3]{\left(\mathsf{neg}\left(g\right)\right) \cdot \left(g \cdot \frac{\frac{\frac{-1}{2}}{g}}{a}\right)} \]
    2. *-commutativeN/A

      \[\leadsto \sqrt[3]{\left(g \cdot \frac{\frac{\frac{-1}{2}}{g}}{a}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)} \]
    3. associate-*r/N/A

      \[\leadsto \sqrt[3]{\frac{g \cdot \frac{\frac{-1}{2}}{g}}{a} \cdot \left(\mathsf{neg}\left(g\right)\right)} \]
    4. associate-*l/N/A

      \[\leadsto \sqrt[3]{\frac{\left(g \cdot \frac{\frac{-1}{2}}{g}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)}{a}} \]
    5. cbrt-divN/A

      \[\leadsto \frac{\sqrt[3]{\left(g \cdot \frac{\frac{-1}{2}}{g}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)}}{\color{blue}{\sqrt[3]{a}}} \]
    6. /-lowering-/.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\left(\sqrt[3]{\left(g \cdot \frac{\frac{-1}{2}}{g}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)}\right), \color{blue}{\left(\sqrt[3]{a}\right)}\right) \]
  8. Applied egg-rr98.7%

    \[\leadsto \color{blue}{\frac{\sqrt[3]{\frac{\frac{g}{\frac{g}{-0.5}}}{\frac{-1}{g}}}}{\sqrt[3]{a}}} \]
  9. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{g}{g \cdot \frac{1}{\frac{-1}{2}}}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    2. metadata-evalN/A

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

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{g}{g \cdot \left(\mathsf{neg}\left(2\right)\right)}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    4. associate-/r*N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{\frac{g}{g}}{\mathsf{neg}\left(2\right)}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    5. *-inversesN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{1}{\mathsf{neg}\left(2\right)}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    6. associate-/l/N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{-1}{g} \cdot \left(\mathsf{neg}\left(2\right)\right)}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    7. frac-2negN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(g\right)} \cdot \left(\mathsf{neg}\left(2\right)\right)}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    8. metadata-evalN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{1}{\mathsf{neg}\left(g\right)} \cdot \left(\mathsf{neg}\left(2\right)\right)}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    9. associate-/r/N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{1}{\frac{\mathsf{neg}\left(g\right)}{\mathsf{neg}\left(2\right)}}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    10. frac-2negN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{1}{\frac{g}{2}}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    11. /-lowering-/.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left(\frac{1}{\frac{g}{2}}\right)\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    12. clear-numN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \left(\frac{2}{g}\right)\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    13. /-lowering-/.f6498.7%

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(1, \mathsf{/.f64}\left(2, g\right)\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
  10. Applied egg-rr98.7%

    \[\leadsto \frac{\sqrt[3]{\color{blue}{\frac{1}{\frac{2}{g}}}}}{\sqrt[3]{a}} \]
  11. Add Preprocessing

Alternative 2: 98.7% accurate, 0.5× speedup?

\[\begin{array}{l} \\ \frac{\sqrt[3]{\frac{g}{2}}}{\sqrt[3]{a}} \end{array} \]
(FPCore (g a) :precision binary64 (/ (cbrt (/ g 2.0)) (cbrt a)))
double code(double g, double a) {
	return cbrt((g / 2.0)) / cbrt(a);
}
public static double code(double g, double a) {
	return Math.cbrt((g / 2.0)) / Math.cbrt(a);
}
function code(g, a)
	return Float64(cbrt(Float64(g / 2.0)) / cbrt(a))
end
code[g_, a_] := N[(N[Power[N[(g / 2.0), $MachinePrecision], 1/3], $MachinePrecision] / N[Power[a, 1/3], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\sqrt[3]{\frac{g}{2}}}{\sqrt[3]{a}}
\end{array}
Derivation
  1. Initial program 80.7%

    \[\sqrt[3]{\frac{g}{2 \cdot a}} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{2 \cdot a}{g}}\right)\right) \]
    2. associate-/r/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{1}{2 \cdot a} \cdot g\right)\right) \]
    3. *-lowering-*.f64N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2 \cdot a}\right), g\right)\right) \]
    4. associate-/r*N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\left(\frac{\frac{1}{2}}{a}\right), g\right)\right) \]
    5. /-lowering-/.f64N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\frac{1}{2}\right), a\right), g\right)\right) \]
    6. metadata-eval80.7%

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(\frac{1}{2}, a\right), g\right)\right) \]
  4. Applied egg-rr80.7%

    \[\leadsto \sqrt[3]{\color{blue}{\frac{0.5}{a} \cdot g}} \]
  5. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \frac{\frac{1}{2}}{a}\right)\right) \]
    2. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \frac{1}{\frac{a}{\frac{1}{2}}}\right)\right) \]
    3. un-div-invN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{g}{\frac{a}{\frac{1}{2}}}\right)\right) \]
    4. frac-2negN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\mathsf{neg}\left(g\right)}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    5. neg-sub0N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{0 - g}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    6. flip3--N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{{0}^{3} - {g}^{3}}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    7. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - {g}^{3}}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    8. mul0-lftN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - {g}^{3}}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    9. cube-unmultN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 \cdot 0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    10. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 + \left(g \cdot g + 0 \cdot g\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    11. mul0-lftN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 + \left(g \cdot g + 0\right)}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    12. +-rgt-identityN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{0 + g \cdot g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    13. +-lft-identityN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 \cdot g - g \cdot \left(g \cdot g\right)}{g \cdot g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    14. frac-subN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0}{g} - \frac{g \cdot g}{g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    15. div-subN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(\frac{a}{\frac{1}{2}}\right)}\right)\right) \]
    16. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(\frac{1}{\frac{\frac{1}{2}}{a}}\right)}\right)\right) \]
    17. associate-/r/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(\frac{1}{\frac{1}{2}} \cdot a\right)}\right)\right) \]
    18. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\mathsf{neg}\left(2 \cdot a\right)}\right)\right) \]
    19. distribute-lft-neg-inN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{\left(\mathsf{neg}\left(2\right)\right) \cdot a}\right)\right) \]
    20. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\frac{0 - g \cdot g}{g}}{-2 \cdot a}\right)\right) \]
    21. un-div-invN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{0 - g \cdot g}{g} \cdot \frac{1}{-2 \cdot a}\right)\right) \]
    22. associate-/l/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{0 - g \cdot g}{g} \cdot \frac{\frac{1}{a}}{-2}\right)\right) \]
    23. times-fracN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\left(0 - g \cdot g\right) \cdot \frac{1}{a}}{g \cdot -2}\right)\right) \]
    24. *-commutativeN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{\left(0 - g \cdot g\right) \cdot \frac{1}{a}}{-2 \cdot g}\right)\right) \]
  6. Applied egg-rr57.0%

    \[\leadsto \sqrt[3]{\color{blue}{\left(0 - g\right) \cdot \left(g \cdot \frac{\frac{-0.5}{g}}{a}\right)}} \]
  7. Step-by-step derivation
    1. sub0-negN/A

      \[\leadsto \sqrt[3]{\left(\mathsf{neg}\left(g\right)\right) \cdot \left(g \cdot \frac{\frac{\frac{-1}{2}}{g}}{a}\right)} \]
    2. *-commutativeN/A

      \[\leadsto \sqrt[3]{\left(g \cdot \frac{\frac{\frac{-1}{2}}{g}}{a}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)} \]
    3. associate-*r/N/A

      \[\leadsto \sqrt[3]{\frac{g \cdot \frac{\frac{-1}{2}}{g}}{a} \cdot \left(\mathsf{neg}\left(g\right)\right)} \]
    4. associate-*l/N/A

      \[\leadsto \sqrt[3]{\frac{\left(g \cdot \frac{\frac{-1}{2}}{g}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)}{a}} \]
    5. cbrt-divN/A

      \[\leadsto \frac{\sqrt[3]{\left(g \cdot \frac{\frac{-1}{2}}{g}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)}}{\color{blue}{\sqrt[3]{a}}} \]
    6. /-lowering-/.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\left(\sqrt[3]{\left(g \cdot \frac{\frac{-1}{2}}{g}\right) \cdot \left(\mathsf{neg}\left(g\right)\right)}\right), \color{blue}{\left(\sqrt[3]{a}\right)}\right) \]
  8. Applied egg-rr98.7%

    \[\leadsto \color{blue}{\frac{\sqrt[3]{\frac{\frac{g}{\frac{g}{-0.5}}}{\frac{-1}{g}}}}{\sqrt[3]{a}}} \]
  9. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{g}{g \cdot \frac{1}{\frac{-1}{2}}}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    2. metadata-evalN/A

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

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{g}{g \cdot \left(\mathsf{neg}\left(2\right)\right)}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    4. associate-/r*N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{\frac{g}{g}}{\mathsf{neg}\left(2\right)}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    5. *-inversesN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{1}{\mathsf{neg}\left(2\right)}}{\frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    6. associate-/r*N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{1}{\left(\mathsf{neg}\left(2\right)\right) \cdot \frac{-1}{g}}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    7. associate-/l/N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{1}{\frac{-1}{g}}}{\mathsf{neg}\left(2\right)}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    8. clear-numN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{\frac{g}{-1}}{\mathsf{neg}\left(2\right)}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    9. associate-/l/N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{g}{\left(\mathsf{neg}\left(2\right)\right) \cdot -1}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    10. metadata-evalN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{g}{-2 \cdot -1}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    11. metadata-evalN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\left(\frac{g}{2}\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
    12. /-lowering-/.f6498.7%

      \[\leadsto \mathsf{/.f64}\left(\mathsf{cbrt.f64}\left(\mathsf{/.f64}\left(g, 2\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
  10. Applied egg-rr98.7%

    \[\leadsto \frac{\sqrt[3]{\color{blue}{\frac{g}{2}}}}{\sqrt[3]{a}} \]
  11. Add Preprocessing

Alternative 3: 98.7% accurate, 0.5× speedup?

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

\\
\sqrt[3]{\frac{0.5}{a}} \cdot \sqrt[3]{g}
\end{array}
Derivation
  1. Initial program 80.7%

    \[\sqrt[3]{\frac{g}{2 \cdot a}} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. clear-numN/A

      \[\leadsto \sqrt[3]{\frac{1}{\frac{2 \cdot a}{g}}} \]
    2. associate-/r/N/A

      \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a} \cdot g} \]
    3. cbrt-prodN/A

      \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \color{blue}{\sqrt[3]{g}} \]
    4. cbrt-divN/A

      \[\leadsto \frac{\sqrt[3]{1}}{\sqrt[3]{2 \cdot a}} \cdot \sqrt[3]{\color{blue}{g}} \]
    5. metadata-evalN/A

      \[\leadsto \frac{1}{\sqrt[3]{2 \cdot a}} \cdot \sqrt[3]{g} \]
    6. cbrt-prodN/A

      \[\leadsto \frac{1}{\sqrt[3]{2} \cdot \sqrt[3]{a}} \cdot \sqrt[3]{g} \]
    7. associate-/r*N/A

      \[\leadsto \frac{\frac{1}{\sqrt[3]{2}}}{\sqrt[3]{a}} \cdot \sqrt[3]{\color{blue}{g}} \]
    8. pow1/3N/A

      \[\leadsto \frac{\frac{1}{{2}^{\frac{1}{3}}}}{\sqrt[3]{a}} \cdot \sqrt[3]{g} \]
    9. pow-flipN/A

      \[\leadsto \frac{{2}^{\left(\mathsf{neg}\left(\frac{1}{3}\right)\right)}}{\sqrt[3]{a}} \cdot \sqrt[3]{g} \]
    10. metadata-evalN/A

      \[\leadsto \frac{{2}^{\frac{-1}{3}}}{\sqrt[3]{a}} \cdot \sqrt[3]{g} \]
    11. metadata-evalN/A

      \[\leadsto \frac{{2}^{\left(-1 \cdot \frac{1}{3}\right)}}{\sqrt[3]{a}} \cdot \sqrt[3]{g} \]
    12. associate-*l/N/A

      \[\leadsto \frac{{2}^{\left(-1 \cdot \frac{1}{3}\right)} \cdot \sqrt[3]{g}}{\color{blue}{\sqrt[3]{a}}} \]
    13. /-lowering-/.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\left({2}^{\left(-1 \cdot \frac{1}{3}\right)} \cdot \sqrt[3]{g}\right), \color{blue}{\left(\sqrt[3]{a}\right)}\right) \]
    14. *-lowering-*.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{*.f64}\left(\left({2}^{\left(-1 \cdot \frac{1}{3}\right)}\right), \left(\sqrt[3]{g}\right)\right), \left(\sqrt[3]{\color{blue}{a}}\right)\right) \]
    15. pow-lowering-pow.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(2, \left(-1 \cdot \frac{1}{3}\right)\right), \left(\sqrt[3]{g}\right)\right), \left(\sqrt[3]{a}\right)\right) \]
    16. metadata-evalN/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), \left(\sqrt[3]{g}\right)\right), \left(\sqrt[3]{a}\right)\right) \]
    17. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{/.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), \mathsf{cbrt.f64}\left(g\right)\right), \left(\sqrt[3]{a}\right)\right) \]
    18. cbrt-lowering-cbrt.f6498.7%

      \[\leadsto \mathsf{/.f64}\left(\mathsf{*.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), \mathsf{cbrt.f64}\left(g\right)\right), \mathsf{cbrt.f64}\left(a\right)\right) \]
  4. Applied egg-rr98.7%

    \[\leadsto \color{blue}{\frac{{2}^{-0.3333333333333333} \cdot \sqrt[3]{g}}{\sqrt[3]{a}}} \]
  5. Step-by-step derivation
    1. frac-2negN/A

      \[\leadsto \frac{\mathsf{neg}\left({2}^{\frac{-1}{3}} \cdot \sqrt[3]{g}\right)}{\color{blue}{\mathsf{neg}\left(\sqrt[3]{a}\right)}} \]
    2. distribute-rgt-neg-inN/A

      \[\leadsto \frac{{2}^{\frac{-1}{3}} \cdot \left(\mathsf{neg}\left(\sqrt[3]{g}\right)\right)}{\mathsf{neg}\left(\color{blue}{\sqrt[3]{a}}\right)} \]
    3. neg-mul-1N/A

      \[\leadsto \frac{{2}^{\frac{-1}{3}} \cdot \left(\mathsf{neg}\left(\sqrt[3]{g}\right)\right)}{-1 \cdot \color{blue}{\sqrt[3]{a}}} \]
    4. times-fracN/A

      \[\leadsto \frac{{2}^{\frac{-1}{3}}}{-1} \cdot \color{blue}{\frac{\mathsf{neg}\left(\sqrt[3]{g}\right)}{\sqrt[3]{a}}} \]
    5. *-lowering-*.f64N/A

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

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

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), -1\right), \left(\frac{\mathsf{neg}\left(\color{blue}{\sqrt[3]{g}}\right)}{\sqrt[3]{a}}\right)\right) \]
    8. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), -1\right), \mathsf{/.f64}\left(\left(\mathsf{neg}\left(\sqrt[3]{g}\right)\right), \color{blue}{\left(\sqrt[3]{a}\right)}\right)\right) \]
    9. neg-sub0N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), -1\right), \mathsf{/.f64}\left(\left(0 - \sqrt[3]{g}\right), \left(\sqrt[3]{\color{blue}{a}}\right)\right)\right) \]
    10. --lowering--.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), -1\right), \mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, \left(\sqrt[3]{g}\right)\right), \left(\sqrt[3]{\color{blue}{a}}\right)\right)\right) \]
    11. cbrt-lowering-cbrt.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), -1\right), \mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, \mathsf{cbrt.f64}\left(g\right)\right), \left(\sqrt[3]{a}\right)\right)\right) \]
    12. cbrt-lowering-cbrt.f6498.7%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{pow.f64}\left(2, \frac{-1}{3}\right), -1\right), \mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, \mathsf{cbrt.f64}\left(g\right)\right), \mathsf{cbrt.f64}\left(a\right)\right)\right) \]
  6. Applied egg-rr98.7%

    \[\leadsto \color{blue}{\frac{{2}^{-0.3333333333333333}}{-1} \cdot \frac{0 - \sqrt[3]{g}}{\sqrt[3]{a}}} \]
  7. Step-by-step derivation
    1. frac-2negN/A

      \[\leadsto \frac{{2}^{\frac{-1}{3}}}{-1} \cdot \frac{\mathsf{neg}\left(\left(0 - \sqrt[3]{g}\right)\right)}{\color{blue}{\mathsf{neg}\left(\sqrt[3]{a}\right)}} \]
    2. frac-timesN/A

      \[\leadsto \frac{{2}^{\frac{-1}{3}} \cdot \left(\mathsf{neg}\left(\left(0 - \sqrt[3]{g}\right)\right)\right)}{\color{blue}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)}} \]
    3. distribute-rgt-neg-inN/A

      \[\leadsto \frac{\mathsf{neg}\left({2}^{\frac{-1}{3}} \cdot \left(0 - \sqrt[3]{g}\right)\right)}{\color{blue}{-1} \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    4. distribute-lft-neg-inN/A

      \[\leadsto \frac{\left(\mathsf{neg}\left({2}^{\frac{-1}{3}}\right)\right) \cdot \left(0 - \sqrt[3]{g}\right)}{\color{blue}{-1} \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    5. *-commutativeN/A

      \[\leadsto \frac{\left(0 - \sqrt[3]{g}\right) \cdot \left(\mathsf{neg}\left({2}^{\frac{-1}{3}}\right)\right)}{\color{blue}{-1} \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    6. remove-double-divN/A

      \[\leadsto \frac{\left(0 - \sqrt[3]{g}\right) \cdot \frac{1}{\frac{1}{\mathsf{neg}\left({2}^{\frac{-1}{3}}\right)}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    7. metadata-evalN/A

      \[\leadsto \frac{\left(0 - \sqrt[3]{g}\right) \cdot \frac{1}{\frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left({2}^{\frac{-1}{3}}\right)}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    8. frac-2negN/A

      \[\leadsto \frac{\left(0 - \sqrt[3]{g}\right) \cdot \frac{1}{\frac{-1}{{2}^{\frac{-1}{3}}}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    9. div-invN/A

      \[\leadsto \frac{\frac{0 - \sqrt[3]{g}}{\frac{-1}{{2}^{\frac{-1}{3}}}}}{\color{blue}{-1} \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    10. sub0-negN/A

      \[\leadsto \frac{\frac{\mathsf{neg}\left(\sqrt[3]{g}\right)}{\frac{-1}{{2}^{\frac{-1}{3}}}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    11. div-invN/A

      \[\leadsto \frac{\frac{\mathsf{neg}\left(\sqrt[3]{g}\right)}{-1 \cdot \frac{1}{{2}^{\frac{-1}{3}}}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    12. mul-1-negN/A

      \[\leadsto \frac{\frac{\mathsf{neg}\left(\sqrt[3]{g}\right)}{\mathsf{neg}\left(\frac{1}{{2}^{\frac{-1}{3}}}\right)}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    13. frac-2negN/A

      \[\leadsto \frac{\frac{\sqrt[3]{g}}{\frac{1}{{2}^{\frac{-1}{3}}}}}{\color{blue}{-1} \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    14. pow-flipN/A

      \[\leadsto \frac{\frac{\sqrt[3]{g}}{{2}^{\left(\mathsf{neg}\left(\frac{-1}{3}\right)\right)}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    15. metadata-evalN/A

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

      \[\leadsto \frac{\frac{\sqrt[3]{g}}{\sqrt[3]{2}}}{-1 \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    17. cbrt-divN/A

      \[\leadsto \frac{\sqrt[3]{\frac{g}{2}}}{\color{blue}{-1} \cdot \left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)} \]
    18. neg-mul-1N/A

      \[\leadsto \frac{\sqrt[3]{\frac{g}{2}}}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\sqrt[3]{a}\right)\right)\right)} \]
    19. remove-double-negN/A

      \[\leadsto \frac{\sqrt[3]{\frac{g}{2}}}{\sqrt[3]{a}} \]
  8. Applied egg-rr98.7%

    \[\leadsto \color{blue}{\sqrt[3]{\frac{0.5}{a}} \cdot \sqrt[3]{g}} \]
  9. Add Preprocessing

Alternative 4: 76.4% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \sqrt[3]{\frac{0.5}{a} \cdot \frac{-1}{\frac{-1}{g}}} \end{array} \]
(FPCore (g a) :precision binary64 (cbrt (* (/ 0.5 a) (/ -1.0 (/ -1.0 g)))))
double code(double g, double a) {
	return cbrt(((0.5 / a) * (-1.0 / (-1.0 / g))));
}
public static double code(double g, double a) {
	return Math.cbrt(((0.5 / a) * (-1.0 / (-1.0 / g))));
}
function code(g, a)
	return cbrt(Float64(Float64(0.5 / a) * Float64(-1.0 / Float64(-1.0 / g))))
end
code[g_, a_] := N[Power[N[(N[(0.5 / a), $MachinePrecision] * N[(-1.0 / N[(-1.0 / g), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 1/3], $MachinePrecision]
\begin{array}{l}

\\
\sqrt[3]{\frac{0.5}{a} \cdot \frac{-1}{\frac{-1}{g}}}
\end{array}
Derivation
  1. Initial program 80.7%

    \[\sqrt[3]{\frac{g}{2 \cdot a}} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \frac{1}{2 \cdot a}\right)\right) \]
    2. inv-powN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(2 \cdot a\right)}^{-1}\right)\right) \]
    3. sqr-powN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \left({\left(2 \cdot a\right)}^{\left(\frac{-1}{2}\right)} \cdot {\left(2 \cdot a\right)}^{\left(\frac{-1}{2}\right)}\right)\right)\right) \]
    4. sqr-powN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(2 \cdot a\right)}^{-1}\right)\right) \]
    5. metadata-evalN/A

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

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(2 \cdot a\right)}^{\left(2 \cdot \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)\right)}\right)\right) \]
    7. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(2 \cdot a\right)}^{\left(2 \cdot \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)\right)}\right)\right) \]
    8. pow-powN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left({\left(2 \cdot a\right)}^{2}\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}\right)\right) \]
    9. pow2N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\left(2 \cdot a\right) \cdot \left(2 \cdot a\right)\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}\right)\right) \]
    10. remove-double-negN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(2 \cdot a\right)\right)\right)\right) \cdot \left(2 \cdot a\right)\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}\right)\right) \]
    11. remove-double-negN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(2 \cdot a\right)\right)\right)\right) \cdot \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(2 \cdot a\right)\right)\right)\right)\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}\right)\right) \]
    12. sqr-negN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\left(\mathsf{neg}\left(2 \cdot a\right)\right) \cdot \left(\mathsf{neg}\left(2 \cdot a\right)\right)\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}\right)\right) \]
    13. pow-prod-downN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \left({\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)} \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}\right)\right)\right) \]
    14. pow-prod-upN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\left(\mathsf{neg}\left(\frac{1}{2}\right)\right) + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)\right)}\right)\right) \]
    15. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\left(\mathsf{neg}\left(\frac{1}{2}\right)\right) + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)\right)}\right)\right) \]
    16. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\frac{-1}{2} + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)\right)}\right)\right) \]
    17. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\frac{-1}{2} + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)\right)}\right)\right) \]
    18. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{\left(\frac{-1}{2} + \frac{-1}{2}\right)}\right)\right) \]
    19. metadata-evalN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot {\left(\mathsf{neg}\left(2 \cdot a\right)\right)}^{-1}\right)\right) \]
    20. inv-powN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(g \cdot \frac{1}{\mathsf{neg}\left(2 \cdot a\right)}\right)\right) \]
  4. Applied egg-rr80.7%

    \[\leadsto \sqrt[3]{\color{blue}{\frac{-1}{\frac{-1}{g}} \cdot \frac{0.5}{a}}} \]
  5. Final simplification80.7%

    \[\leadsto \sqrt[3]{\frac{0.5}{a} \cdot \frac{-1}{\frac{-1}{g}}} \]
  6. Add Preprocessing

Alternative 5: 76.4% accurate, 1.0× speedup?

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

\\
\sqrt[3]{g \cdot \frac{0.5}{a}}
\end{array}
Derivation
  1. Initial program 80.7%

    \[\sqrt[3]{\frac{g}{2 \cdot a}} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. clear-numN/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{1}{\frac{2 \cdot a}{g}}\right)\right) \]
    2. associate-/r/N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\left(\frac{1}{2 \cdot a} \cdot g\right)\right) \]
    3. *-lowering-*.f64N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\left(\frac{1}{2 \cdot a}\right), g\right)\right) \]
    4. associate-/r*N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\left(\frac{\frac{1}{2}}{a}\right), g\right)\right) \]
    5. /-lowering-/.f64N/A

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\frac{1}{2}\right), a\right), g\right)\right) \]
    6. metadata-eval80.7%

      \[\leadsto \mathsf{cbrt.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(\frac{1}{2}, a\right), g\right)\right) \]
  4. Applied egg-rr80.7%

    \[\leadsto \sqrt[3]{\color{blue}{\frac{0.5}{a} \cdot g}} \]
  5. Final simplification80.7%

    \[\leadsto \sqrt[3]{g \cdot \frac{0.5}{a}} \]
  6. Add Preprocessing

Reproduce

?
herbie shell --seed 2024191 
(FPCore (g a)
  :name "2-ancestry mixing, zero discriminant"
  :precision binary64
  (cbrt (/ g (* 2.0 a))))