Average Error: 35.4 → 30.9
Time: 39.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 -3.32375082481898832441063963780814386474 \cdot 10^{-157}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\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) + \left(-g\right)} + \sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot \frac{1}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + \left(-g\right)\right) \cdot \frac{1}{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - g}\\ \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 -3.32375082481898832441063963780814386474 \cdot 10^{-157}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\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) + \left(-g\right)} + \sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot \frac{1}{2 \cdot a}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r6236073 = 1.0;
        double r6236074 = 2.0;
        double r6236075 = a;
        double r6236076 = r6236074 * r6236075;
        double r6236077 = r6236073 / r6236076;
        double r6236078 = g;
        double r6236079 = -r6236078;
        double r6236080 = r6236078 * r6236078;
        double r6236081 = h;
        double r6236082 = r6236081 * r6236081;
        double r6236083 = r6236080 - r6236082;
        double r6236084 = sqrt(r6236083);
        double r6236085 = r6236079 + r6236084;
        double r6236086 = r6236077 * r6236085;
        double r6236087 = cbrt(r6236086);
        double r6236088 = r6236079 - r6236084;
        double r6236089 = r6236077 * r6236088;
        double r6236090 = cbrt(r6236089);
        double r6236091 = r6236087 + r6236090;
        return r6236091;
}

double f(double g, double h, double a) {
        double r6236092 = g;
        double r6236093 = -3.3237508248189883e-157;
        bool r6236094 = r6236092 <= r6236093;
        double r6236095 = 1.0;
        double r6236096 = 2.0;
        double r6236097 = a;
        double r6236098 = r6236096 * r6236097;
        double r6236099 = r6236095 / r6236098;
        double r6236100 = cbrt(r6236099);
        double r6236101 = r6236092 * r6236092;
        double r6236102 = h;
        double r6236103 = r6236102 * r6236102;
        double r6236104 = r6236101 - r6236103;
        double r6236105 = sqrt(r6236104);
        double r6236106 = cbrt(r6236105);
        double r6236107 = r6236106 * r6236106;
        double r6236108 = r6236106 * r6236107;
        double r6236109 = -r6236092;
        double r6236110 = r6236108 + r6236109;
        double r6236111 = cbrt(r6236110);
        double r6236112 = r6236100 * r6236111;
        double r6236113 = r6236109 - r6236105;
        double r6236114 = r6236113 * r6236099;
        double r6236115 = cbrt(r6236114);
        double r6236116 = r6236112 + r6236115;
        double r6236117 = r6236105 + r6236109;
        double r6236118 = r6236117 * r6236099;
        double r6236119 = cbrt(r6236118);
        double r6236120 = r6236109 - r6236092;
        double r6236121 = cbrt(r6236120);
        double r6236122 = r6236100 * r6236121;
        double r6236123 = r6236119 + r6236122;
        double r6236124 = r6236094 ? r6236116 : r6236123;
        return r6236124;
}

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 < -3.3237508248189883e-157

    1. Initial program 34.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 cbrt-prod30.8

      \[\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. Using strategy rm
    5. Applied add-cube-cbrt30.8

      \[\leadsto \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}}}} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]

    if -3.3237508248189883e-157 < g

    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 cbrt-prod32.1

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

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

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

Reproduce

herbie shell --seed 2019172 +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))))))))