Average Error: 35.5 → 31.2
Time: 8.6s
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 -2.10518339907436567 \cdot 10^{-158}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \left|\sqrt[3]{g \cdot g - h \cdot h}\right| \cdot \sqrt{\sqrt[3]{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\ \mathbf{else}:\\ \;\;\;\;\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 \sqrt[3]{\left(-g\right) - g}\\ \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 -2.10518339907436567 \cdot 10^{-158}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \left|\sqrt[3]{g \cdot g - h \cdot h}\right| \cdot \sqrt{\sqrt[3]{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\

\mathbf{else}:\\
\;\;\;\;\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 \sqrt[3]{\left(-g\right) - g}\\

\end{array}
double f(double g, double h, double a) {
        double r160772 = 1.0;
        double r160773 = 2.0;
        double r160774 = a;
        double r160775 = r160773 * r160774;
        double r160776 = r160772 / r160775;
        double r160777 = g;
        double r160778 = -r160777;
        double r160779 = r160777 * r160777;
        double r160780 = h;
        double r160781 = r160780 * r160780;
        double r160782 = r160779 - r160781;
        double r160783 = sqrt(r160782);
        double r160784 = r160778 + r160783;
        double r160785 = r160776 * r160784;
        double r160786 = cbrt(r160785);
        double r160787 = r160778 - r160783;
        double r160788 = r160776 * r160787;
        double r160789 = cbrt(r160788);
        double r160790 = r160786 + r160789;
        return r160790;
}

double f(double g, double h, double a) {
        double r160791 = g;
        double r160792 = -2.1051833990743657e-158;
        bool r160793 = r160791 <= r160792;
        double r160794 = 1.0;
        double r160795 = 2.0;
        double r160796 = a;
        double r160797 = r160795 * r160796;
        double r160798 = r160794 / r160797;
        double r160799 = cbrt(r160798);
        double r160800 = -r160791;
        double r160801 = r160791 * r160791;
        double r160802 = h;
        double r160803 = r160802 * r160802;
        double r160804 = r160801 - r160803;
        double r160805 = cbrt(r160804);
        double r160806 = fabs(r160805);
        double r160807 = sqrt(r160805);
        double r160808 = r160806 * r160807;
        double r160809 = r160800 + r160808;
        double r160810 = cbrt(r160809);
        double r160811 = r160799 * r160810;
        double r160812 = sqrt(r160804);
        double r160813 = r160800 - r160812;
        double r160814 = cbrt(r160813);
        double r160815 = r160799 * r160814;
        double r160816 = r160811 + r160815;
        double r160817 = r160800 + r160812;
        double r160818 = r160798 * r160817;
        double r160819 = cbrt(r160818);
        double r160820 = r160800 - r160791;
        double r160821 = cbrt(r160820);
        double r160822 = r160799 * r160821;
        double r160823 = r160819 + r160822;
        double r160824 = r160793 ? r160816 : r160823;
        return r160824;
}

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 < -2.1051833990743657e-158

    1. Initial program 33.7

      \[\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. Using strategy rm
    3. Applied cbrt-prod33.7

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

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

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

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

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

    if -2.1051833990743657e-158 < g

    1. Initial program 37.1

      \[\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. Using strategy rm
    3. Applied cbrt-prod33.6

      \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \color{blue}{\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}\]
    4. Taylor expanded around inf 32.2

      \[\leadsto \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 \sqrt[3]{\left(-g\right) - \color{blue}{g}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;g \le -2.10518339907436567 \cdot 10^{-158}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \left|\sqrt[3]{g \cdot g - h \cdot h}\right| \cdot \sqrt{\sqrt[3]{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\ \mathbf{else}:\\ \;\;\;\;\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 \sqrt[3]{\left(-g\right) - g}\\ \end{array}\]

Reproduce

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