Average Error: 35.5 → 31.2
Time: 8.4s
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 r168568 = 1.0;
        double r168569 = 2.0;
        double r168570 = a;
        double r168571 = r168569 * r168570;
        double r168572 = r168568 / r168571;
        double r168573 = g;
        double r168574 = -r168573;
        double r168575 = r168573 * r168573;
        double r168576 = h;
        double r168577 = r168576 * r168576;
        double r168578 = r168575 - r168577;
        double r168579 = sqrt(r168578);
        double r168580 = r168574 + r168579;
        double r168581 = r168572 * r168580;
        double r168582 = cbrt(r168581);
        double r168583 = r168574 - r168579;
        double r168584 = r168572 * r168583;
        double r168585 = cbrt(r168584);
        double r168586 = r168582 + r168585;
        return r168586;
}

double f(double g, double h, double a) {
        double r168587 = g;
        double r168588 = -2.1051833990743657e-158;
        bool r168589 = r168587 <= r168588;
        double r168590 = 1.0;
        double r168591 = 2.0;
        double r168592 = a;
        double r168593 = r168591 * r168592;
        double r168594 = r168590 / r168593;
        double r168595 = cbrt(r168594);
        double r168596 = -r168587;
        double r168597 = r168587 * r168587;
        double r168598 = h;
        double r168599 = r168598 * r168598;
        double r168600 = r168597 - r168599;
        double r168601 = cbrt(r168600);
        double r168602 = fabs(r168601);
        double r168603 = sqrt(r168601);
        double r168604 = r168602 * r168603;
        double r168605 = r168596 + r168604;
        double r168606 = cbrt(r168605);
        double r168607 = r168595 * r168606;
        double r168608 = sqrt(r168600);
        double r168609 = r168596 - r168608;
        double r168610 = cbrt(r168609);
        double r168611 = r168595 * r168610;
        double r168612 = r168607 + r168611;
        double r168613 = r168596 + r168608;
        double r168614 = r168594 * r168613;
        double r168615 = cbrt(r168614);
        double r168616 = r168596 - r168587;
        double r168617 = cbrt(r168616);
        double r168618 = r168595 * r168617;
        double r168619 = r168615 + r168618;
        double r168620 = r168589 ? r168612 : r168619;
        return r168620;
}

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))))))))