Average Error: 36.6 → 32.2
Time: 8.3s
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.7601370127167322 \cdot 10^{-167}:\\ \;\;\;\;\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}:\\ \;\;\;\;\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 \sqrt[3]{\left(-g\right) - \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) \cdot \sqrt[3]{\sqrt{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.7601370127167322 \cdot 10^{-167}:\\
\;\;\;\;\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}:\\
\;\;\;\;\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 \sqrt[3]{\left(-g\right) - \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}}\\

\end{array}
double f(double g, double h, double a) {
        double r126338 = 1.0;
        double r126339 = 2.0;
        double r126340 = a;
        double r126341 = r126339 * r126340;
        double r126342 = r126338 / r126341;
        double r126343 = g;
        double r126344 = -r126343;
        double r126345 = r126343 * r126343;
        double r126346 = h;
        double r126347 = r126346 * r126346;
        double r126348 = r126345 - r126347;
        double r126349 = sqrt(r126348);
        double r126350 = r126344 + r126349;
        double r126351 = r126342 * r126350;
        double r126352 = cbrt(r126351);
        double r126353 = r126344 - r126349;
        double r126354 = r126342 * r126353;
        double r126355 = cbrt(r126354);
        double r126356 = r126352 + r126355;
        return r126356;
}

double f(double g, double h, double a) {
        double r126357 = g;
        double r126358 = 1.760137012716732e-167;
        bool r126359 = r126357 <= r126358;
        double r126360 = 1.0;
        double r126361 = -r126357;
        double r126362 = -1.0;
        double r126363 = r126362 * r126357;
        double r126364 = r126361 + r126363;
        double r126365 = r126360 * r126364;
        double r126366 = cbrt(r126365);
        double r126367 = 2.0;
        double r126368 = a;
        double r126369 = r126367 * r126368;
        double r126370 = cbrt(r126369);
        double r126371 = r126366 / r126370;
        double r126372 = r126360 / r126369;
        double r126373 = r126357 * r126357;
        double r126374 = h;
        double r126375 = r126374 * r126374;
        double r126376 = r126373 - r126375;
        double r126377 = sqrt(r126376);
        double r126378 = r126361 - r126377;
        double r126379 = r126372 * r126378;
        double r126380 = cbrt(r126379);
        double r126381 = r126371 + r126380;
        double r126382 = r126361 + r126377;
        double r126383 = r126360 * r126382;
        double r126384 = cbrt(r126383);
        double r126385 = r126384 / r126370;
        double r126386 = cbrt(r126372);
        double r126387 = cbrt(r126377);
        double r126388 = r126387 * r126387;
        double r126389 = r126388 * r126387;
        double r126390 = r126361 - r126389;
        double r126391 = cbrt(r126390);
        double r126392 = r126386 * r126391;
        double r126393 = r126385 + r126392;
        double r126394 = r126359 ? r126381 : r126393;
        return r126394;
}

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.760137012716732e-167

    1. Initial program 37.6

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

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

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

      \[\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.760137012716732e-167 < 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 associate-*l/35.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-div35.4

      \[\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. Using strategy rm
    6. Applied cbrt-prod31.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;g \le 1.7601370127167322 \cdot 10^{-167}:\\ \;\;\;\;\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}:\\ \;\;\;\;\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 \sqrt[3]{\left(-g\right) - \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}}\\ \end{array}\]

Reproduce

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