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

\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + \left(-g\right)\right) \cdot \frac{1}{2 \cdot a}} + \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 r4515955 = 1.0;
        double r4515956 = 2.0;
        double r4515957 = a;
        double r4515958 = r4515956 * r4515957;
        double r4515959 = r4515955 / r4515958;
        double r4515960 = g;
        double r4515961 = -r4515960;
        double r4515962 = r4515960 * r4515960;
        double r4515963 = h;
        double r4515964 = r4515963 * r4515963;
        double r4515965 = r4515962 - r4515964;
        double r4515966 = sqrt(r4515965);
        double r4515967 = r4515961 + r4515966;
        double r4515968 = r4515959 * r4515967;
        double r4515969 = cbrt(r4515968);
        double r4515970 = r4515961 - r4515966;
        double r4515971 = r4515959 * r4515970;
        double r4515972 = cbrt(r4515971);
        double r4515973 = r4515969 + r4515972;
        return r4515973;
}

double f(double g, double h, double a) {
        double r4515974 = g;
        double r4515975 = -8.241867523918404e-156;
        bool r4515976 = r4515974 <= r4515975;
        double r4515977 = 1.0;
        double r4515978 = 2.0;
        double r4515979 = a;
        double r4515980 = r4515978 * r4515979;
        double r4515981 = r4515977 / r4515980;
        double r4515982 = cbrt(r4515981);
        double r4515983 = r4515974 * r4515974;
        double r4515984 = h;
        double r4515985 = r4515984 * r4515984;
        double r4515986 = r4515983 - r4515985;
        double r4515987 = sqrt(r4515986);
        double r4515988 = cbrt(r4515987);
        double r4515989 = r4515988 * r4515988;
        double r4515990 = r4515988 * r4515989;
        double r4515991 = -r4515974;
        double r4515992 = r4515990 + r4515991;
        double r4515993 = cbrt(r4515992);
        double r4515994 = r4515982 * r4515993;
        double r4515995 = r4515991 - r4515987;
        double r4515996 = r4515995 * r4515981;
        double r4515997 = cbrt(r4515996);
        double r4515998 = r4515994 + r4515997;
        double r4515999 = r4515987 + r4515991;
        double r4516000 = r4515999 * r4515981;
        double r4516001 = cbrt(r4516000);
        double r4516002 = r4515991 - r4515974;
        double r4516003 = cbrt(r4516002);
        double r4516004 = r4515982 * r4516003;
        double r4516005 = r4516001 + r4516004;
        double r4516006 = r4515976 ? r4515998 : r4516005;
        return r4516006;
}

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 < -8.241867523918404e-156

    1. Initial program 34.4

      \[\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-prod31.0

      \[\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 \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt31.0

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

    if -8.241867523918404e-156 < g

    1. Initial program 35.8

      \[\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-prod32.3

      \[\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 31.5

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

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

Reproduce

herbie shell --seed 2019132 +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))))))))