Average Error: 35.2 → 31.3
Time: 40.7s
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 9.325618184987134 \cdot 10^{-167}:\\ \;\;\;\;\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + g\right) \cdot \frac{\frac{-1}{2}}{a}} + \frac{\sqrt[3]{\left(-g\right) - g}}{\sqrt[3]{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{\frac{-1}{2}}{a}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h} + g} + \sqrt[3]{\frac{\sqrt{g \cdot g - h \cdot h} - g}{2 \cdot 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 9.325618184987134 \cdot 10^{-167}:\\
\;\;\;\;\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + g\right) \cdot \frac{\frac{-1}{2}}{a}} + \frac{\sqrt[3]{\left(-g\right) - g}}{\sqrt[3]{2 \cdot a}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r30015606 = 1.0;
        double r30015607 = 2.0;
        double r30015608 = a;
        double r30015609 = r30015607 * r30015608;
        double r30015610 = r30015606 / r30015609;
        double r30015611 = g;
        double r30015612 = -r30015611;
        double r30015613 = r30015611 * r30015611;
        double r30015614 = h;
        double r30015615 = r30015614 * r30015614;
        double r30015616 = r30015613 - r30015615;
        double r30015617 = sqrt(r30015616);
        double r30015618 = r30015612 + r30015617;
        double r30015619 = r30015610 * r30015618;
        double r30015620 = cbrt(r30015619);
        double r30015621 = r30015612 - r30015617;
        double r30015622 = r30015610 * r30015621;
        double r30015623 = cbrt(r30015622);
        double r30015624 = r30015620 + r30015623;
        return r30015624;
}

double f(double g, double h, double a) {
        double r30015625 = g;
        double r30015626 = 9.325618184987134e-167;
        bool r30015627 = r30015625 <= r30015626;
        double r30015628 = r30015625 * r30015625;
        double r30015629 = h;
        double r30015630 = r30015629 * r30015629;
        double r30015631 = r30015628 - r30015630;
        double r30015632 = sqrt(r30015631);
        double r30015633 = r30015632 + r30015625;
        double r30015634 = -0.5;
        double r30015635 = a;
        double r30015636 = r30015634 / r30015635;
        double r30015637 = r30015633 * r30015636;
        double r30015638 = cbrt(r30015637);
        double r30015639 = -r30015625;
        double r30015640 = r30015639 - r30015625;
        double r30015641 = cbrt(r30015640);
        double r30015642 = 2.0;
        double r30015643 = r30015642 * r30015635;
        double r30015644 = cbrt(r30015643);
        double r30015645 = r30015641 / r30015644;
        double r30015646 = r30015638 + r30015645;
        double r30015647 = cbrt(r30015636);
        double r30015648 = cbrt(r30015633);
        double r30015649 = r30015647 * r30015648;
        double r30015650 = r30015632 - r30015625;
        double r30015651 = r30015650 / r30015643;
        double r30015652 = cbrt(r30015651);
        double r30015653 = r30015649 + r30015652;
        double r30015654 = r30015627 ? r30015646 : r30015653;
        return r30015654;
}

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 < 9.325618184987134e-167

    1. Initial program 36.2

      \[\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. Simplified36.2

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

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

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

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

    if 9.325618184987134e-167 < g

    1. Initial program 34.2

      \[\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.2

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

      \[\leadsto \sqrt[3]{\frac{\sqrt{g \cdot g - h \cdot h} - g}{a \cdot 2}} + \color{blue}{\sqrt[3]{\frac{\frac{-1}{2}}{a}} \cdot \sqrt[3]{g + \sqrt{g \cdot g - h \cdot h}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.3

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

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(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))))))))