Average Error: 35.2 → 31.2
Time: 28.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 4.732713041008813 \cdot 10^{-185}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{-\left(g + g\right)} \cdot \sqrt[3]{\frac{1}{2 \cdot a}}\\ \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]{2 \cdot a}} + \sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + \left(-g\right)\right) \cdot \frac{1}{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 4.732713041008813 \cdot 10^{-185}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{-\left(g + g\right)} \cdot \sqrt[3]{\frac{1}{2 \cdot a}}\\

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

\end{array}
double f(double g, double h, double a) {
        double r5095124 = 1.0;
        double r5095125 = 2.0;
        double r5095126 = a;
        double r5095127 = r5095125 * r5095126;
        double r5095128 = r5095124 / r5095127;
        double r5095129 = g;
        double r5095130 = -r5095129;
        double r5095131 = r5095129 * r5095129;
        double r5095132 = h;
        double r5095133 = r5095132 * r5095132;
        double r5095134 = r5095131 - r5095133;
        double r5095135 = sqrt(r5095134);
        double r5095136 = r5095130 + r5095135;
        double r5095137 = r5095128 * r5095136;
        double r5095138 = cbrt(r5095137);
        double r5095139 = r5095130 - r5095135;
        double r5095140 = r5095128 * r5095139;
        double r5095141 = cbrt(r5095140);
        double r5095142 = r5095138 + r5095141;
        return r5095142;
}

double f(double g, double h, double a) {
        double r5095143 = g;
        double r5095144 = 4.732713041008813e-185;
        bool r5095145 = r5095143 <= r5095144;
        double r5095146 = 1.0;
        double r5095147 = 2.0;
        double r5095148 = a;
        double r5095149 = r5095147 * r5095148;
        double r5095150 = r5095146 / r5095149;
        double r5095151 = -r5095143;
        double r5095152 = r5095143 * r5095143;
        double r5095153 = h;
        double r5095154 = r5095153 * r5095153;
        double r5095155 = r5095152 - r5095154;
        double r5095156 = sqrt(r5095155);
        double r5095157 = r5095151 - r5095156;
        double r5095158 = r5095150 * r5095157;
        double r5095159 = cbrt(r5095158);
        double r5095160 = r5095143 + r5095143;
        double r5095161 = -r5095160;
        double r5095162 = cbrt(r5095161);
        double r5095163 = cbrt(r5095150);
        double r5095164 = r5095162 * r5095163;
        double r5095165 = r5095159 + r5095164;
        double r5095166 = cbrt(r5095156);
        double r5095167 = r5095166 * r5095166;
        double r5095168 = r5095166 * r5095167;
        double r5095169 = r5095151 - r5095168;
        double r5095170 = cbrt(r5095169);
        double r5095171 = cbrt(r5095149);
        double r5095172 = r5095170 / r5095171;
        double r5095173 = r5095156 + r5095151;
        double r5095174 = r5095173 * r5095150;
        double r5095175 = cbrt(r5095174);
        double r5095176 = r5095172 + r5095175;
        double r5095177 = r5095145 ? r5095165 : r5095176;
        return r5095177;
}

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 < 4.732713041008813e-185

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

      \[\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 31.7

      \[\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)}\]
    5. Simplified31.7

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

    if 4.732713041008813e-185 < g

    1. Initial program 34.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. Using strategy rm
    3. Applied associate-*l/34.6

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

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

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

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

Reproduce

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