Average Error: 35.3 → 31.6
Time: 38.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 1.9672653841540804 \cdot 10^{-62}:\\ \;\;\;\;\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\frac{1}{2 \cdot a}} + \sqrt[3]{\left(-g\right) + \mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\sqrt{g \cdot g - h \cdot h}\right)\right)\right)\right)} \cdot \sqrt[3]{\frac{1}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{h \cdot h}}{\sqrt[3]{\left(2 \cdot a\right) \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}} + \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\frac{1}{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 1.9672653841540804 \cdot 10^{-62}:\\
\;\;\;\;\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\frac{1}{2 \cdot a}} + \sqrt[3]{\left(-g\right) + \mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\sqrt{g \cdot g - h \cdot h}\right)\right)\right)\right)} \cdot \sqrt[3]{\frac{1}{2 \cdot a}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r13301799 = 1.0;
        double r13301800 = 2.0;
        double r13301801 = a;
        double r13301802 = r13301800 * r13301801;
        double r13301803 = r13301799 / r13301802;
        double r13301804 = g;
        double r13301805 = -r13301804;
        double r13301806 = r13301804 * r13301804;
        double r13301807 = h;
        double r13301808 = r13301807 * r13301807;
        double r13301809 = r13301806 - r13301808;
        double r13301810 = sqrt(r13301809);
        double r13301811 = r13301805 + r13301810;
        double r13301812 = r13301803 * r13301811;
        double r13301813 = cbrt(r13301812);
        double r13301814 = r13301805 - r13301810;
        double r13301815 = r13301803 * r13301814;
        double r13301816 = cbrt(r13301815);
        double r13301817 = r13301813 + r13301816;
        return r13301817;
}

double f(double g, double h, double a) {
        double r13301818 = g;
        double r13301819 = 1.9672653841540804e-62;
        bool r13301820 = r13301818 <= r13301819;
        double r13301821 = -r13301818;
        double r13301822 = r13301818 * r13301818;
        double r13301823 = h;
        double r13301824 = r13301823 * r13301823;
        double r13301825 = r13301822 - r13301824;
        double r13301826 = sqrt(r13301825);
        double r13301827 = r13301821 - r13301826;
        double r13301828 = cbrt(r13301827);
        double r13301829 = 1.0;
        double r13301830 = 2.0;
        double r13301831 = a;
        double r13301832 = r13301830 * r13301831;
        double r13301833 = r13301829 / r13301832;
        double r13301834 = cbrt(r13301833);
        double r13301835 = r13301828 * r13301834;
        double r13301836 = log1p(r13301826);
        double r13301837 = expm1(r13301836);
        double r13301838 = r13301821 + r13301837;
        double r13301839 = cbrt(r13301838);
        double r13301840 = r13301839 * r13301834;
        double r13301841 = r13301835 + r13301840;
        double r13301842 = cbrt(r13301824);
        double r13301843 = r13301832 * r13301827;
        double r13301844 = cbrt(r13301843);
        double r13301845 = r13301842 / r13301844;
        double r13301846 = r13301845 + r13301835;
        double r13301847 = r13301820 ? r13301841 : r13301846;
        return r13301847;
}

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.9672653841540804e-62

    1. Initial program 34.6

      \[\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. Using strategy rm
    5. Applied cbrt-prod30.4

      \[\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 expm1-log1p-u30.9

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

    if 1.9672653841540804e-62 < g

    1. Initial program 36.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-prod33.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. Using strategy rm
    5. Applied flip-+33.3

      \[\leadsto \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}}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\]
    6. Applied frac-times33.4

      \[\leadsto \sqrt[3]{\color{blue}{\frac{1 \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(2 \cdot a\right) \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) - \sqrt{g \cdot g - h \cdot h}}\]
    7. Applied cbrt-div33.4

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1 \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(2 \cdot a\right) \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) - \sqrt{g \cdot g - h \cdot h}}\]
    8. Simplified32.6

      \[\leadsto \frac{\color{blue}{\sqrt[3]{h \cdot h}}}{\sqrt[3]{\left(2 \cdot a\right) \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) - \sqrt{g \cdot g - h \cdot h}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.6

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

Reproduce

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