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

\mathbf{else}:\\
\;\;\;\;\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 r150391 = 1.0;
        double r150392 = 2.0;
        double r150393 = a;
        double r150394 = r150392 * r150393;
        double r150395 = r150391 / r150394;
        double r150396 = g;
        double r150397 = -r150396;
        double r150398 = r150396 * r150396;
        double r150399 = h;
        double r150400 = r150399 * r150399;
        double r150401 = r150398 - r150400;
        double r150402 = sqrt(r150401);
        double r150403 = r150397 + r150402;
        double r150404 = r150395 * r150403;
        double r150405 = cbrt(r150404);
        double r150406 = r150397 - r150402;
        double r150407 = r150395 * r150406;
        double r150408 = cbrt(r150407);
        double r150409 = r150405 + r150408;
        return r150409;
}

double f(double g, double h, double a) {
        double r150410 = g;
        double r150411 = -3.3699063191104645e-158;
        bool r150412 = r150410 <= r150411;
        double r150413 = 1.0;
        double r150414 = 2.0;
        double r150415 = a;
        double r150416 = r150414 * r150415;
        double r150417 = r150413 / r150416;
        double r150418 = cbrt(r150417);
        double r150419 = -r150410;
        double r150420 = h;
        double r150421 = r150410 + r150420;
        double r150422 = r150410 - r150420;
        double r150423 = r150421 * r150422;
        double r150424 = sqrt(r150423);
        double r150425 = r150419 + r150424;
        double r150426 = cbrt(r150425);
        double r150427 = r150418 * r150426;
        double r150428 = -1.0;
        double r150429 = r150428 * r150410;
        double r150430 = r150419 - r150429;
        double r150431 = r150413 * r150430;
        double r150432 = cbrt(r150431);
        double r150433 = cbrt(r150416);
        double r150434 = r150432 / r150433;
        double r150435 = r150427 + r150434;
        double r150436 = r150410 * r150410;
        double r150437 = r150420 * r150420;
        double r150438 = r150436 - r150437;
        double r150439 = sqrt(r150438);
        double r150440 = r150419 + r150439;
        double r150441 = r150417 * r150440;
        double r150442 = cbrt(r150441);
        double r150443 = r150419 - r150410;
        double r150444 = r150413 * r150443;
        double r150445 = cbrt(r150444);
        double r150446 = r150445 / r150433;
        double r150447 = r150442 + r150446;
        double r150448 = r150412 ? r150435 : r150447;
        return r150448;
}

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.3699063191104645e-158

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

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

      \[\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 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}}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}\]
    7. Using strategy rm
    8. Applied difference-of-squares31.7

      \[\leadsto \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)}}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}\]
    9. Taylor expanded around -inf 32.0

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

    if -3.3699063191104645e-158 < g

    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. Using strategy rm
    3. Applied associate-*l/36.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-div32.9

      \[\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. Taylor expanded around inf 31.8

      \[\leadsto \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 simplification31.9

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