Average Error: 36.5 → 32.3
Time: 8.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 1.492993927208692322586615174297839195807 \cdot 10^{-202}:\\ \;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + -1 \cdot g\right)}}{\sqrt[3]{2 \cdot a}} + \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 \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{\left(\sqrt[3]{g \cdot g - h \cdot h} \cdot \sqrt[3]{g \cdot g - h \cdot h}\right) \cdot \sqrt[3]{g \cdot g - h \cdot 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.492993927208692322586615174297839195807 \cdot 10^{-202}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + -1 \cdot g\right)}}{\sqrt[3]{2 \cdot a}} + \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 \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{\left(\sqrt[3]{g \cdot g - h \cdot h} \cdot \sqrt[3]{g \cdot g - h \cdot h}\right) \cdot \sqrt[3]{g \cdot g - h \cdot h}}}\\

\end{array}
double f(double g, double h, double a) {
        double r117474 = 1.0;
        double r117475 = 2.0;
        double r117476 = a;
        double r117477 = r117475 * r117476;
        double r117478 = r117474 / r117477;
        double r117479 = g;
        double r117480 = -r117479;
        double r117481 = r117479 * r117479;
        double r117482 = h;
        double r117483 = r117482 * r117482;
        double r117484 = r117481 - r117483;
        double r117485 = sqrt(r117484);
        double r117486 = r117480 + r117485;
        double r117487 = r117478 * r117486;
        double r117488 = cbrt(r117487);
        double r117489 = r117480 - r117485;
        double r117490 = r117478 * r117489;
        double r117491 = cbrt(r117490);
        double r117492 = r117488 + r117491;
        return r117492;
}

double f(double g, double h, double a) {
        double r117493 = g;
        double r117494 = 1.4929939272086923e-202;
        bool r117495 = r117493 <= r117494;
        double r117496 = 1.0;
        double r117497 = -r117493;
        double r117498 = -1.0;
        double r117499 = r117498 * r117493;
        double r117500 = r117497 + r117499;
        double r117501 = r117496 * r117500;
        double r117502 = cbrt(r117501);
        double r117503 = 2.0;
        double r117504 = a;
        double r117505 = r117503 * r117504;
        double r117506 = cbrt(r117505);
        double r117507 = r117502 / r117506;
        double r117508 = r117496 / r117505;
        double r117509 = r117493 * r117493;
        double r117510 = h;
        double r117511 = r117510 * r117510;
        double r117512 = r117509 - r117511;
        double r117513 = sqrt(r117512);
        double r117514 = r117497 - r117513;
        double r117515 = r117508 * r117514;
        double r117516 = cbrt(r117515);
        double r117517 = r117507 + r117516;
        double r117518 = cbrt(r117508);
        double r117519 = r117497 + r117513;
        double r117520 = cbrt(r117519);
        double r117521 = r117518 * r117520;
        double r117522 = cbrt(r117512);
        double r117523 = r117522 * r117522;
        double r117524 = r117523 * r117522;
        double r117525 = sqrt(r117524);
        double r117526 = r117497 - r117525;
        double r117527 = cbrt(r117526);
        double r117528 = r117518 * r117527;
        double r117529 = r117521 + r117528;
        double r117530 = r117495 ? r117517 : r117529;
        return r117530;
}

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.4929939272086923e-202

    1. Initial program 37.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 associate-*l/37.5

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

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

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

    if 1.4929939272086923e-202 < g

    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-prod35.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 \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]
    4. Using strategy rm
    5. Applied cbrt-prod31.7

      \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \color{blue}{\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 add-cube-cbrt31.7

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

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

Reproduce

herbie shell --seed 2020002 
(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))))))))