Average Error: 36.4 → 32.1
Time: 9.2s
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.824957770492126269462751713124247080079 \cdot 10^{-179}:\\ \;\;\;\;\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)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}} \cdot \sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}\right) \cdot \sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - g\right)}}{\sqrt[3]{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 -8.824957770492126269462751713124247080079 \cdot 10^{-179}:\\
\;\;\;\;\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)}\\

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

\end{array}
double f(double g, double h, double a) {
        double r153483 = 1.0;
        double r153484 = 2.0;
        double r153485 = a;
        double r153486 = r153484 * r153485;
        double r153487 = r153483 / r153486;
        double r153488 = g;
        double r153489 = -r153488;
        double r153490 = r153488 * r153488;
        double r153491 = h;
        double r153492 = r153491 * r153491;
        double r153493 = r153490 - r153492;
        double r153494 = sqrt(r153493);
        double r153495 = r153489 + r153494;
        double r153496 = r153487 * r153495;
        double r153497 = cbrt(r153496);
        double r153498 = r153489 - r153494;
        double r153499 = r153487 * r153498;
        double r153500 = cbrt(r153499);
        double r153501 = r153497 + r153500;
        return r153501;
}

double f(double g, double h, double a) {
        double r153502 = g;
        double r153503 = -8.824957770492126e-179;
        bool r153504 = r153502 <= r153503;
        double r153505 = 1.0;
        double r153506 = 2.0;
        double r153507 = a;
        double r153508 = r153506 * r153507;
        double r153509 = r153505 / r153508;
        double r153510 = cbrt(r153509);
        double r153511 = -r153502;
        double r153512 = r153502 * r153502;
        double r153513 = h;
        double r153514 = r153513 * r153513;
        double r153515 = r153512 - r153514;
        double r153516 = sqrt(r153515);
        double r153517 = r153511 + r153516;
        double r153518 = cbrt(r153517);
        double r153519 = r153510 * r153518;
        double r153520 = r153511 - r153516;
        double r153521 = r153509 * r153520;
        double r153522 = cbrt(r153521);
        double r153523 = r153519 + r153522;
        double r153524 = r153509 * r153517;
        double r153525 = cbrt(r153524);
        double r153526 = cbrt(r153525);
        double r153527 = r153526 * r153526;
        double r153528 = r153527 * r153526;
        double r153529 = r153511 - r153502;
        double r153530 = r153505 * r153529;
        double r153531 = cbrt(r153530);
        double r153532 = cbrt(r153508);
        double r153533 = r153531 / r153532;
        double r153534 = r153528 + r153533;
        double r153535 = r153504 ? r153523 : r153534;
        return r153535;
}

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.824957770492126e-179

    1. Initial program 35.5

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

      \[\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)}\]

    if -8.824957770492126e-179 < g

    1. Initial program 37.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. Using strategy rm
    3. Applied associate-*l/37.3

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;g \le -8.824957770492126269462751713124247080079 \cdot 10^{-179}:\\ \;\;\;\;\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)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}} \cdot \sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}\right) \cdot \sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - g\right)}}{\sqrt[3]{2 \cdot a}}\\ \end{array}\]

Reproduce

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