Average Error: 34.8 → 30.6
Time: 29.5s
Precision: 64
\[\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]
\[\begin{array}{l} \mathbf{if}\;g \le 1.5914749870004055 \cdot 10^{-162}:\\ \;\;\;\;\sqrt[3]{\frac{\frac{h \cdot h}{g - \sqrt{\left(h + g\right) \cdot \left(g - h\right)}}}{a} \cdot \frac{-1}{2}} + \frac{\sqrt[3]{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}}{\sqrt[3]{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \frac{\sqrt[3]{\left(\sqrt{g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}} \cdot \sqrt{g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}}\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}}\\ \end{array}\]
\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}
\begin{array}{l}
\mathbf{if}\;g \le 1.5914749870004055 \cdot 10^{-162}:\\
\;\;\;\;\sqrt[3]{\frac{\frac{h \cdot h}{g - \sqrt{\left(h + g\right) \cdot \left(g - h\right)}}}{a} \cdot \frac{-1}{2}} + \frac{\sqrt[3]{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}}{\sqrt[3]{2 \cdot a}}\\

\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \frac{\sqrt[3]{\left(\sqrt{g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}} \cdot \sqrt{g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}}\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}}\\

\end{array}
double f(double g, double h, double a) {
        double r5104771 = 1.0;
        double r5104772 = 2.0;
        double r5104773 = a;
        double r5104774 = r5104772 * r5104773;
        double r5104775 = r5104771 / r5104774;
        double r5104776 = g;
        double r5104777 = -r5104776;
        double r5104778 = r5104776 * r5104776;
        double r5104779 = h;
        double r5104780 = r5104779 * r5104779;
        double r5104781 = r5104778 - r5104780;
        double r5104782 = sqrt(r5104781);
        double r5104783 = r5104777 + r5104782;
        double r5104784 = r5104775 * r5104783;
        double r5104785 = cbrt(r5104784);
        double r5104786 = r5104777 - r5104782;
        double r5104787 = r5104775 * r5104786;
        double r5104788 = cbrt(r5104787);
        double r5104789 = r5104785 + r5104788;
        return r5104789;
}

double f(double g, double h, double a) {
        double r5104790 = g;
        double r5104791 = 1.5914749870004055e-162;
        bool r5104792 = r5104790 <= r5104791;
        double r5104793 = h;
        double r5104794 = r5104793 * r5104793;
        double r5104795 = r5104793 + r5104790;
        double r5104796 = r5104790 - r5104793;
        double r5104797 = r5104795 * r5104796;
        double r5104798 = sqrt(r5104797);
        double r5104799 = r5104790 - r5104798;
        double r5104800 = r5104794 / r5104799;
        double r5104801 = a;
        double r5104802 = r5104800 / r5104801;
        double r5104803 = -0.5;
        double r5104804 = r5104802 * r5104803;
        double r5104805 = cbrt(r5104804);
        double r5104806 = r5104798 - r5104790;
        double r5104807 = cbrt(r5104806);
        double r5104808 = 2.0;
        double r5104809 = r5104808 * r5104801;
        double r5104810 = cbrt(r5104809);
        double r5104811 = r5104807 / r5104810;
        double r5104812 = r5104805 + r5104811;
        double r5104813 = r5104806 / r5104809;
        double r5104814 = cbrt(r5104813);
        double r5104815 = r5104790 + r5104798;
        double r5104816 = sqrt(r5104815);
        double r5104817 = r5104816 * r5104816;
        double r5104818 = r5104817 * r5104803;
        double r5104819 = cbrt(r5104818);
        double r5104820 = cbrt(r5104801);
        double r5104821 = r5104819 / r5104820;
        double r5104822 = r5104814 + r5104821;
        double r5104823 = r5104792 ? r5104812 : r5104822;
        return r5104823;
}

Error

Bits error versus g

Bits error versus h

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if g < 1.5914749870004055e-162

    1. Initial program 35.5

      \[\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]
    2. Simplified35.5

      \[\leadsto \color{blue}{\sqrt[3]{\frac{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \sqrt[3]{\frac{g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}{a} \cdot \frac{-1}{2}}}\]
    3. Using strategy rm
    4. Applied cbrt-div31.6

      \[\leadsto \color{blue}{\frac{\sqrt[3]{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}}{\sqrt[3]{2 \cdot a}}} + \sqrt[3]{\frac{g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}{a} \cdot \frac{-1}{2}}\]
    5. Using strategy rm
    6. Applied flip-+31.5

      \[\leadsto \frac{\sqrt[3]{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{\color{blue}{\frac{g \cdot g - \sqrt{\left(g + h\right) \cdot \left(g - h\right)} \cdot \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}{g - \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}}}{a} \cdot \frac{-1}{2}}\]
    7. Simplified30.8

      \[\leadsto \frac{\sqrt[3]{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{\frac{\color{blue}{0 + h \cdot h}}{g - \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}}{a} \cdot \frac{-1}{2}}\]

    if 1.5914749870004055e-162 < g

    1. Initial program 34.0

      \[\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]
    2. Simplified34.0

      \[\leadsto \color{blue}{\sqrt[3]{\frac{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \sqrt[3]{\frac{g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}{a} \cdot \frac{-1}{2}}}\]
    3. Using strategy rm
    4. Applied associate-*l/34.0

      \[\leadsto \sqrt[3]{\frac{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \sqrt[3]{\color{blue}{\frac{\left(g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}\right) \cdot \frac{-1}{2}}{a}}}\]
    5. Applied cbrt-div30.3

      \[\leadsto \sqrt[3]{\frac{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \color{blue}{\frac{\sqrt[3]{\left(g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}}}\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt30.3

      \[\leadsto \sqrt[3]{\frac{\sqrt{\left(g + h\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \frac{\sqrt[3]{\color{blue}{\left(\sqrt{g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}} \cdot \sqrt{g + \sqrt{\left(g + h\right) \cdot \left(g - h\right)}}\right)} \cdot \frac{-1}{2}}}{\sqrt[3]{a}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification30.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;g \le 1.5914749870004055 \cdot 10^{-162}:\\ \;\;\;\;\sqrt[3]{\frac{\frac{h \cdot h}{g - \sqrt{\left(h + g\right) \cdot \left(g - h\right)}}}{a} \cdot \frac{-1}{2}} + \frac{\sqrt[3]{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}}{\sqrt[3]{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}{2 \cdot a}} + \frac{\sqrt[3]{\left(\sqrt{g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}} \cdot \sqrt{g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}}\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019139 
(FPCore (g h a)
  :name "2-ancestry mixing, positive discriminant"
  (+ (cbrt (* (/ 1 (* 2 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1 (* 2 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))