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

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

\end{array}
double f(double g, double h, double a) {
        double r8245868 = 1.0;
        double r8245869 = 2.0;
        double r8245870 = a;
        double r8245871 = r8245869 * r8245870;
        double r8245872 = r8245868 / r8245871;
        double r8245873 = g;
        double r8245874 = -r8245873;
        double r8245875 = r8245873 * r8245873;
        double r8245876 = h;
        double r8245877 = r8245876 * r8245876;
        double r8245878 = r8245875 - r8245877;
        double r8245879 = sqrt(r8245878);
        double r8245880 = r8245874 + r8245879;
        double r8245881 = r8245872 * r8245880;
        double r8245882 = cbrt(r8245881);
        double r8245883 = r8245874 - r8245879;
        double r8245884 = r8245872 * r8245883;
        double r8245885 = cbrt(r8245884);
        double r8245886 = r8245882 + r8245885;
        return r8245886;
}

double f(double g, double h, double a) {
        double r8245887 = g;
        double r8245888 = -3.035091110489776e-158;
        bool r8245889 = r8245887 <= r8245888;
        double r8245890 = h;
        double r8245891 = r8245887 + r8245890;
        double r8245892 = r8245887 - r8245890;
        double r8245893 = r8245891 * r8245892;
        double r8245894 = sqrt(r8245893);
        double r8245895 = r8245894 - r8245887;
        double r8245896 = cbrt(r8245895);
        double r8245897 = 0.5;
        double r8245898 = a;
        double r8245899 = r8245897 / r8245898;
        double r8245900 = cbrt(r8245899);
        double r8245901 = r8245896 * r8245900;
        double r8245902 = -0.5;
        double r8245903 = r8245902 / r8245898;
        double r8245904 = r8245887 + r8245894;
        double r8245905 = r8245903 * r8245904;
        double r8245906 = cbrt(r8245905);
        double r8245907 = r8245901 + r8245906;
        double r8245908 = r8245887 + r8245887;
        double r8245909 = r8245908 * r8245902;
        double r8245910 = cbrt(r8245909);
        double r8245911 = cbrt(r8245898);
        double r8245912 = r8245910 / r8245911;
        double r8245913 = r8245895 * r8245899;
        double r8245914 = cbrt(r8245913);
        double r8245915 = r8245912 + r8245914;
        double r8245916 = r8245889 ? r8245907 : r8245915;
        return r8245916;
}

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 < -3.035091110489776e-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. Simplified33.7

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

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

    if -3.035091110489776e-158 < g

    1. Initial program 36.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. Simplified36.8

      \[\leadsto \color{blue}{\sqrt[3]{\frac{\frac{1}{2}}{a} \cdot \left(\sqrt{\left(g - h\right) \cdot \left(g + h\right)} - g\right)} + \sqrt[3]{\frac{\frac{-1}{2}}{a} \cdot \left(g + \sqrt{\left(g - h\right) \cdot \left(g + h\right)}\right)}}\]
    3. Using strategy rm
    4. Applied associate-*l/36.8

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

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

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

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

Reproduce

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