Average Error: 36.1 → 31.3
Time: 8.1s
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.2243130481662061 \cdot 10^{-161}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + -1 \cdot 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 \sqrt[3]{\frac{\left({g}^{2} - {g}^{2}\right) + {h}^{2}}{\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(g + h\right) \cdot \left(g - h\right)}}\\ \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.2243130481662061 \cdot 10^{-161}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + -1 \cdot 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 \sqrt[3]{\frac{\left({g}^{2} - {g}^{2}\right) + {h}^{2}}{\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(g + h\right) \cdot \left(g - h\right)}}\\

\end{array}
double f(double g, double h, double a) {
        double r142342 = 1.0;
        double r142343 = 2.0;
        double r142344 = a;
        double r142345 = r142343 * r142344;
        double r142346 = r142342 / r142345;
        double r142347 = g;
        double r142348 = -r142347;
        double r142349 = r142347 * r142347;
        double r142350 = h;
        double r142351 = r142350 * r142350;
        double r142352 = r142349 - r142351;
        double r142353 = sqrt(r142352);
        double r142354 = r142348 + r142353;
        double r142355 = r142346 * r142354;
        double r142356 = cbrt(r142355);
        double r142357 = r142348 - r142353;
        double r142358 = r142346 * r142357;
        double r142359 = cbrt(r142358);
        double r142360 = r142356 + r142359;
        return r142360;
}

double f(double g, double h, double a) {
        double r142361 = g;
        double r142362 = 3.224313048166206e-161;
        bool r142363 = r142361 <= r142362;
        double r142364 = 1.0;
        double r142365 = 2.0;
        double r142366 = a;
        double r142367 = r142365 * r142366;
        double r142368 = r142364 / r142367;
        double r142369 = cbrt(r142368);
        double r142370 = -r142361;
        double r142371 = -1.0;
        double r142372 = r142371 * r142361;
        double r142373 = r142370 + r142372;
        double r142374 = cbrt(r142373);
        double r142375 = r142369 * r142374;
        double r142376 = r142361 * r142361;
        double r142377 = h;
        double r142378 = r142377 * r142377;
        double r142379 = r142376 - r142378;
        double r142380 = sqrt(r142379);
        double r142381 = r142370 - r142380;
        double r142382 = r142368 * r142381;
        double r142383 = cbrt(r142382);
        double r142384 = r142375 + r142383;
        double r142385 = 2.0;
        double r142386 = pow(r142361, r142385);
        double r142387 = r142386 - r142386;
        double r142388 = pow(r142377, r142385);
        double r142389 = r142387 + r142388;
        double r142390 = r142389 / r142381;
        double r142391 = cbrt(r142390);
        double r142392 = r142369 * r142391;
        double r142393 = r142361 + r142377;
        double r142394 = r142361 - r142377;
        double r142395 = r142393 * r142394;
        double r142396 = sqrt(r142395);
        double r142397 = r142370 - r142396;
        double r142398 = cbrt(r142397);
        double r142399 = r142369 * r142398;
        double r142400 = r142392 + r142399;
        double r142401 = r142363 ? r142384 : r142400;
        return r142401;
}

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.224313048166206e-161

    1. Initial program 36.8

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

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

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

    if 3.224313048166206e-161 < g

    1. Initial program 35.2

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

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

      \[\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 difference-of-squares31.5

      \[\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(g + h\right) \cdot \left(g - h\right)}}}\]
    8. Using strategy rm
    9. Applied flip-+31.4

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

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

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

Reproduce

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