Average Error: 36.2 → 31.7
Time: 28.6s
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 2.776832660171497124288324412416908546106 \cdot 10^{-160}:\\ \;\;\;\;\sqrt[3]{\frac{1 \cdot \left(\left(-g\right) - g\right)}{2}} \cdot \sqrt[3]{\frac{1}{a}} + \sqrt[3]{\frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{a} \cdot \frac{1}{2}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{\left(\sqrt{g \cdot g - h \cdot h} - g\right) \cdot \frac{1}{2}}{a}} + \frac{\sqrt[3]{\frac{\left(\left(-g\right) - \sqrt{\left(g - h\right) \cdot \left(h + g\right)}\right) \cdot 1}{2}}}{\sqrt[3]{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 2.776832660171497124288324412416908546106 \cdot 10^{-160}:\\
\;\;\;\;\sqrt[3]{\frac{1 \cdot \left(\left(-g\right) - g\right)}{2}} \cdot \sqrt[3]{\frac{1}{a}} + \sqrt[3]{\frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{a} \cdot \frac{1}{2}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r97287 = 1.0;
        double r97288 = 2.0;
        double r97289 = a;
        double r97290 = r97288 * r97289;
        double r97291 = r97287 / r97290;
        double r97292 = g;
        double r97293 = -r97292;
        double r97294 = r97292 * r97292;
        double r97295 = h;
        double r97296 = r97295 * r97295;
        double r97297 = r97294 - r97296;
        double r97298 = sqrt(r97297);
        double r97299 = r97293 + r97298;
        double r97300 = r97291 * r97299;
        double r97301 = cbrt(r97300);
        double r97302 = r97293 - r97298;
        double r97303 = r97291 * r97302;
        double r97304 = cbrt(r97303);
        double r97305 = r97301 + r97304;
        return r97305;
}

double f(double g, double h, double a) {
        double r97306 = g;
        double r97307 = 2.776832660171497e-160;
        bool r97308 = r97306 <= r97307;
        double r97309 = 1.0;
        double r97310 = -r97306;
        double r97311 = r97310 - r97306;
        double r97312 = r97309 * r97311;
        double r97313 = 2.0;
        double r97314 = r97312 / r97313;
        double r97315 = cbrt(r97314);
        double r97316 = 1.0;
        double r97317 = a;
        double r97318 = r97316 / r97317;
        double r97319 = cbrt(r97318);
        double r97320 = r97315 * r97319;
        double r97321 = r97306 * r97306;
        double r97322 = h;
        double r97323 = r97322 * r97322;
        double r97324 = r97321 - r97323;
        double r97325 = sqrt(r97324);
        double r97326 = r97310 - r97325;
        double r97327 = r97326 / r97317;
        double r97328 = r97309 / r97313;
        double r97329 = r97327 * r97328;
        double r97330 = cbrt(r97329);
        double r97331 = r97320 + r97330;
        double r97332 = r97325 - r97306;
        double r97333 = r97332 * r97328;
        double r97334 = r97333 / r97317;
        double r97335 = cbrt(r97334);
        double r97336 = r97306 - r97322;
        double r97337 = r97322 + r97306;
        double r97338 = r97336 * r97337;
        double r97339 = sqrt(r97338);
        double r97340 = r97310 - r97339;
        double r97341 = r97340 * r97309;
        double r97342 = r97341 / r97313;
        double r97343 = cbrt(r97342);
        double r97344 = cbrt(r97317);
        double r97345 = r97343 / r97344;
        double r97346 = r97335 + r97345;
        double r97347 = r97308 ? r97331 : r97346;
        return r97347;
}

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 < 2.776832660171497e-160

    1. Initial program 36.7

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

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

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

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

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

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

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

    if 2.776832660171497e-160 < 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. Simplified35.6

      \[\leadsto \color{blue}{\sqrt[3]{\frac{\frac{1}{2} \cdot \left(\sqrt{g \cdot g - h \cdot h} - g\right)}{a}} + \sqrt[3]{\frac{1}{2} \cdot \frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{a}}}\]
    3. Using strategy rm
    4. Applied associate-*r/35.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;g \le 2.776832660171497124288324412416908546106 \cdot 10^{-160}:\\ \;\;\;\;\sqrt[3]{\frac{1 \cdot \left(\left(-g\right) - g\right)}{2}} \cdot \sqrt[3]{\frac{1}{a}} + \sqrt[3]{\frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{a} \cdot \frac{1}{2}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{\left(\sqrt{g \cdot g - h \cdot h} - g\right) \cdot \frac{1}{2}}{a}} + \frac{\sqrt[3]{\frac{\left(\left(-g\right) - \sqrt{\left(g - h\right) \cdot \left(h + g\right)}\right) \cdot 1}{2}}}{\sqrt[3]{a}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019195 +o rules:numerics
(FPCore (g h a)
  :name "2-ancestry mixing, positive discriminant"
  (+ (cbrt (* (/ 1.0 (* 2.0 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1.0 (* 2.0 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))