Average Error: 35.3 → 31.3
Time: 38.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 7.3048056976364 \cdot 10^{-159}:\\ \;\;\;\;\sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot \frac{1}{a \cdot 2}} + \frac{\sqrt[3]{\left(-g\right) - g}}{\sqrt[3]{a \cdot 2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{\left(-g\right) - \sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right)}}{\sqrt[3]{a \cdot 2}} + \sqrt[3]{\frac{1}{a \cdot 2} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot 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 7.3048056976364 \cdot 10^{-159}:\\
\;\;\;\;\sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot \frac{1}{a \cdot 2}} + \frac{\sqrt[3]{\left(-g\right) - g}}{\sqrt[3]{a \cdot 2}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r4059212 = 1.0;
        double r4059213 = 2.0;
        double r4059214 = a;
        double r4059215 = r4059213 * r4059214;
        double r4059216 = r4059212 / r4059215;
        double r4059217 = g;
        double r4059218 = -r4059217;
        double r4059219 = r4059217 * r4059217;
        double r4059220 = h;
        double r4059221 = r4059220 * r4059220;
        double r4059222 = r4059219 - r4059221;
        double r4059223 = sqrt(r4059222);
        double r4059224 = r4059218 + r4059223;
        double r4059225 = r4059216 * r4059224;
        double r4059226 = cbrt(r4059225);
        double r4059227 = r4059218 - r4059223;
        double r4059228 = r4059216 * r4059227;
        double r4059229 = cbrt(r4059228);
        double r4059230 = r4059226 + r4059229;
        return r4059230;
}

double f(double g, double h, double a) {
        double r4059231 = g;
        double r4059232 = 7.3048056976364e-159;
        bool r4059233 = r4059231 <= r4059232;
        double r4059234 = -r4059231;
        double r4059235 = r4059231 * r4059231;
        double r4059236 = h;
        double r4059237 = r4059236 * r4059236;
        double r4059238 = r4059235 - r4059237;
        double r4059239 = sqrt(r4059238);
        double r4059240 = r4059234 - r4059239;
        double r4059241 = 1.0;
        double r4059242 = a;
        double r4059243 = 2.0;
        double r4059244 = r4059242 * r4059243;
        double r4059245 = r4059241 / r4059244;
        double r4059246 = r4059240 * r4059245;
        double r4059247 = cbrt(r4059246);
        double r4059248 = r4059234 - r4059231;
        double r4059249 = cbrt(r4059248);
        double r4059250 = cbrt(r4059244);
        double r4059251 = r4059249 / r4059250;
        double r4059252 = r4059247 + r4059251;
        double r4059253 = cbrt(r4059239);
        double r4059254 = r4059253 * r4059253;
        double r4059255 = r4059253 * r4059254;
        double r4059256 = r4059234 - r4059255;
        double r4059257 = cbrt(r4059256);
        double r4059258 = r4059257 / r4059250;
        double r4059259 = r4059234 + r4059239;
        double r4059260 = r4059245 * r4059259;
        double r4059261 = cbrt(r4059260);
        double r4059262 = r4059258 + r4059261;
        double r4059263 = r4059233 ? r4059252 : r4059262;
        return r4059263;
}

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 < 7.3048056976364e-159

    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]{\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-div32.9

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

      \[\leadsto \frac{\color{blue}{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}}{\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)}\]
    6. Taylor expanded around -inf 32.0

      \[\leadsto \frac{\sqrt[3]{\color{blue}{-1 \cdot g} - g}}{\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)}\]
    7. Simplified32.0

      \[\leadsto \frac{\sqrt[3]{\color{blue}{\left(-g\right)} - g}}{\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 7.3048056976364e-159 < g

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

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

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

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

Reproduce

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