Average Error: 36.2 → 32.6
Time: 28.2s
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.578437290860725688762688654467523893552 \cdot 10^{-162}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{1}{a} \cdot \frac{h \cdot h}{2}}}{\sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}}} + \frac{\sqrt[3]{\left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right) \cdot 1}}{\sqrt[3]{a \cdot 2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot 1}}{\sqrt[3]{a \cdot 2}} + \sqrt[3]{\left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right) \cdot \frac{1}{a \cdot 2}}\\ \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.578437290860725688762688654467523893552 \cdot 10^{-162}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{1}{a} \cdot \frac{h \cdot h}{2}}}{\sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}}} + \frac{\sqrt[3]{\left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right) \cdot 1}}{\sqrt[3]{a \cdot 2}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r4561682 = 1.0;
        double r4561683 = 2.0;
        double r4561684 = a;
        double r4561685 = r4561683 * r4561684;
        double r4561686 = r4561682 / r4561685;
        double r4561687 = g;
        double r4561688 = -r4561687;
        double r4561689 = r4561687 * r4561687;
        double r4561690 = h;
        double r4561691 = r4561690 * r4561690;
        double r4561692 = r4561689 - r4561691;
        double r4561693 = sqrt(r4561692);
        double r4561694 = r4561688 + r4561693;
        double r4561695 = r4561686 * r4561694;
        double r4561696 = cbrt(r4561695);
        double r4561697 = r4561688 - r4561693;
        double r4561698 = r4561686 * r4561697;
        double r4561699 = cbrt(r4561698);
        double r4561700 = r4561696 + r4561699;
        return r4561700;
}

double f(double g, double h, double a) {
        double r4561701 = g;
        double r4561702 = 1.5784372908607257e-162;
        bool r4561703 = r4561701 <= r4561702;
        double r4561704 = 1.0;
        double r4561705 = a;
        double r4561706 = r4561704 / r4561705;
        double r4561707 = h;
        double r4561708 = r4561707 * r4561707;
        double r4561709 = 2.0;
        double r4561710 = r4561708 / r4561709;
        double r4561711 = r4561706 * r4561710;
        double r4561712 = cbrt(r4561711);
        double r4561713 = -r4561701;
        double r4561714 = r4561701 * r4561701;
        double r4561715 = r4561714 - r4561708;
        double r4561716 = sqrt(r4561715);
        double r4561717 = r4561713 + r4561716;
        double r4561718 = cbrt(r4561717);
        double r4561719 = r4561712 / r4561718;
        double r4561720 = r4561717 * r4561704;
        double r4561721 = cbrt(r4561720);
        double r4561722 = r4561705 * r4561709;
        double r4561723 = cbrt(r4561722);
        double r4561724 = r4561721 / r4561723;
        double r4561725 = r4561719 + r4561724;
        double r4561726 = r4561713 - r4561716;
        double r4561727 = r4561726 * r4561704;
        double r4561728 = cbrt(r4561727);
        double r4561729 = r4561728 / r4561723;
        double r4561730 = r4561704 / r4561722;
        double r4561731 = r4561717 * r4561730;
        double r4561732 = cbrt(r4561731);
        double r4561733 = r4561729 + r4561732;
        double r4561734 = r4561703 ? r4561725 : r4561733;
        return r4561734;
}

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.5784372908607257e-162

    1. Initial program 37.3

      \[\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 associate-*l/37.3

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

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

      \[\leadsto \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \color{blue}{\frac{\left(-g\right) \cdot \left(-g\right) - \sqrt{g \cdot g - h \cdot h} \cdot \sqrt{g \cdot g - h \cdot h}}{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}}}}\]
    7. Applied associate-*r/33.7

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

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

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

    if 1.5784372908607257e-162 < g

    1. Initial program 34.9

      \[\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 associate-*l/34.9

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

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

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

Reproduce

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