Average Error: 36.2 → 31.7
Time: 23.6s
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.651480181213853540846755577960497248466 \cdot 10^{-243}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - g} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\sqrt{g \cdot g - h \cdot h} - g\right)} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g + h} \cdot \sqrt{g - h}}\\ \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.651480181213853540846755577960497248466 \cdot 10^{-243}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - g} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\

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

\end{array}
double f(double g, double h, double a) {
        double r149775 = 1.0;
        double r149776 = 2.0;
        double r149777 = a;
        double r149778 = r149776 * r149777;
        double r149779 = r149775 / r149778;
        double r149780 = g;
        double r149781 = -r149780;
        double r149782 = r149780 * r149780;
        double r149783 = h;
        double r149784 = r149783 * r149783;
        double r149785 = r149782 - r149784;
        double r149786 = sqrt(r149785);
        double r149787 = r149781 + r149786;
        double r149788 = r149779 * r149787;
        double r149789 = cbrt(r149788);
        double r149790 = r149781 - r149786;
        double r149791 = r149779 * r149790;
        double r149792 = cbrt(r149791);
        double r149793 = r149789 + r149792;
        return r149793;
}

double f(double g, double h, double a) {
        double r149794 = g;
        double r149795 = 1.6514801812138535e-243;
        bool r149796 = r149794 <= r149795;
        double r149797 = 1.0;
        double r149798 = 2.0;
        double r149799 = a;
        double r149800 = r149798 * r149799;
        double r149801 = r149797 / r149800;
        double r149802 = cbrt(r149801);
        double r149803 = -r149794;
        double r149804 = r149803 - r149794;
        double r149805 = cbrt(r149804);
        double r149806 = r149802 * r149805;
        double r149807 = r149794 * r149794;
        double r149808 = h;
        double r149809 = r149808 * r149808;
        double r149810 = r149807 - r149809;
        double r149811 = sqrt(r149810);
        double r149812 = r149803 - r149811;
        double r149813 = r149801 * r149812;
        double r149814 = cbrt(r149813);
        double r149815 = r149806 + r149814;
        double r149816 = r149811 - r149794;
        double r149817 = r149801 * r149816;
        double r149818 = cbrt(r149817);
        double r149819 = r149794 + r149808;
        double r149820 = sqrt(r149819);
        double r149821 = r149794 - r149808;
        double r149822 = sqrt(r149821);
        double r149823 = r149820 * r149822;
        double r149824 = r149803 - r149823;
        double r149825 = cbrt(r149824);
        double r149826 = r149802 * r149825;
        double r149827 = r149818 + r149826;
        double r149828 = r149796 ? r149815 : r149827;
        return r149828;
}

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.6514801812138535e-243

    1. Initial program 36.3

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

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

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

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

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

    if 1.6514801812138535e-243 < g

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

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

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

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

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

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

Reproduce

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