Average Error: 35.2 → 31.5
Time: 2.5m
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.5642964097194712 \cdot 10^{-162}:\\ \;\;\;\;\sqrt[3]{\frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{\frac{a}{\frac{1}{2}}}} + \frac{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}} + \sqrt[3]{\frac{g - g}{\frac{a}{\frac{1}{2}}}}\\ \end{array}\]
double f(double g, double h, double a) {
        double r30473210 = 1.0;
        double r30473211 = 2.0;
        double r30473212 = a;
        double r30473213 = r30473211 * r30473212;
        double r30473214 = r30473210 / r30473213;
        double r30473215 = g;
        double r30473216 = -r30473215;
        double r30473217 = r30473215 * r30473215;
        double r30473218 = h;
        double r30473219 = r30473218 * r30473218;
        double r30473220 = r30473217 - r30473219;
        double r30473221 = sqrt(r30473220);
        double r30473222 = r30473216 + r30473221;
        double r30473223 = r30473214 * r30473222;
        double r30473224 = cbrt(r30473223);
        double r30473225 = r30473216 - r30473221;
        double r30473226 = r30473214 * r30473225;
        double r30473227 = cbrt(r30473226);
        double r30473228 = r30473224 + r30473227;
        return r30473228;
}

double f(double g, double h, double a) {
        double r30473229 = g;
        double r30473230 = -1.5642964097194712e-162;
        bool r30473231 = r30473229 <= r30473230;
        double r30473232 = -r30473229;
        double r30473233 = r30473229 * r30473229;
        double r30473234 = h;
        double r30473235 = r30473234 * r30473234;
        double r30473236 = r30473233 - r30473235;
        double r30473237 = sqrt(r30473236);
        double r30473238 = r30473232 - r30473237;
        double r30473239 = a;
        double r30473240 = 0.5;
        double r30473241 = r30473239 / r30473240;
        double r30473242 = r30473238 / r30473241;
        double r30473243 = cbrt(r30473242);
        double r30473244 = r30473237 - r30473229;
        double r30473245 = cbrt(r30473244);
        double r30473246 = cbrt(r30473241);
        double r30473247 = r30473245 / r30473246;
        double r30473248 = r30473243 + r30473247;
        double r30473249 = cbrt(r30473238);
        double r30473250 = r30473249 / r30473246;
        double r30473251 = r30473229 - r30473229;
        double r30473252 = r30473251 / r30473241;
        double r30473253 = cbrt(r30473252);
        double r30473254 = r30473250 + r30473253;
        double r30473255 = r30473231 ? r30473248 : r30473254;
        return r30473255;
}

\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.5642964097194712 \cdot 10^{-162}:\\
\;\;\;\;\sqrt[3]{\frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{\frac{a}{\frac{1}{2}}}} + \frac{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}}\\

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

\end{array}

Error

Bits error versus g

Bits error versus h

Bits error versus a

Derivation

  1. Split input into 2 regimes
  2. if g < -1.5642964097194712e-162

    1. Initial program 33.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. Simplified33.6

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

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

    if -1.5642964097194712e-162 < g

    1. Initial program 36.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. Simplified36.6

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

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

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

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

Reproduce

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