Average Error: 35.5 → 31.6
Time: 10.4s
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.1782238543655228 \cdot 10^{-238}:\\ \;\;\;\;\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 \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \frac{\sqrt[3]{1 \cdot \left(\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}}\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 -1.1782238543655228 \cdot 10^{-238}:\\
\;\;\;\;\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 \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \frac{\sqrt[3]{1 \cdot \left(\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}}\right)}}{\sqrt[3]{2 \cdot a}}\\

\end{array}
double f(double g, double h, double a) {
        double r172221 = 1.0;
        double r172222 = 2.0;
        double r172223 = a;
        double r172224 = r172222 * r172223;
        double r172225 = r172221 / r172224;
        double r172226 = g;
        double r172227 = -r172226;
        double r172228 = r172226 * r172226;
        double r172229 = h;
        double r172230 = r172229 * r172229;
        double r172231 = r172228 - r172230;
        double r172232 = sqrt(r172231);
        double r172233 = r172227 + r172232;
        double r172234 = r172225 * r172233;
        double r172235 = cbrt(r172234);
        double r172236 = r172227 - r172232;
        double r172237 = r172225 * r172236;
        double r172238 = cbrt(r172237);
        double r172239 = r172235 + r172238;
        return r172239;
}

double f(double g, double h, double a) {
        double r172240 = g;
        double r172241 = -1.1782238543655228e-238;
        bool r172242 = r172240 <= r172241;
        double r172243 = 1.0;
        double r172244 = 2.0;
        double r172245 = a;
        double r172246 = r172244 * r172245;
        double r172247 = r172243 / r172246;
        double r172248 = cbrt(r172247);
        double r172249 = -r172240;
        double r172250 = -1.0;
        double r172251 = r172250 * r172240;
        double r172252 = r172249 + r172251;
        double r172253 = cbrt(r172252);
        double r172254 = r172248 * r172253;
        double r172255 = r172240 * r172240;
        double r172256 = h;
        double r172257 = r172256 * r172256;
        double r172258 = r172255 - r172257;
        double r172259 = sqrt(r172258);
        double r172260 = r172249 - r172259;
        double r172261 = r172247 * r172260;
        double r172262 = cbrt(r172261);
        double r172263 = r172254 + r172262;
        double r172264 = r172249 + r172259;
        double r172265 = r172247 * r172264;
        double r172266 = cbrt(r172265);
        double r172267 = cbrt(r172259);
        double r172268 = r172267 * r172267;
        double r172269 = r172268 * r172267;
        double r172270 = r172249 - r172269;
        double r172271 = r172243 * r172270;
        double r172272 = cbrt(r172271);
        double r172273 = cbrt(r172246);
        double r172274 = r172272 / r172273;
        double r172275 = r172266 + r172274;
        double r172276 = r172242 ? r172263 : r172275;
        return r172276;
}

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.1782238543655228e-238

    1. Initial program 35.0

      \[\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-prod31.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. Taylor expanded around -inf 30.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 -1.1782238543655228e-238 < g

    1. Initial program 35.9

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

      \[\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.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 add-cube-cbrt32.4

      \[\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}{\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}}}\right)}}{\sqrt[3]{2 \cdot a}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.6

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

Reproduce

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