Average Error: 36.6 → 32.2
Time: 1.2m
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.019764828236680478073231038689567412102 \cdot 10^{-191}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h} + \left(-g\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{\left(\left(-g\right) - g\right) \cdot 1}}{\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 -1.019764828236680478073231038689567412102 \cdot 10^{-191}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h} + \left(-g\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\left(\left(-g\right) - g\right) \cdot 1}}{\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 r5828172 = 1.0;
        double r5828173 = 2.0;
        double r5828174 = a;
        double r5828175 = r5828173 * r5828174;
        double r5828176 = r5828172 / r5828175;
        double r5828177 = g;
        double r5828178 = -r5828177;
        double r5828179 = r5828177 * r5828177;
        double r5828180 = h;
        double r5828181 = r5828180 * r5828180;
        double r5828182 = r5828179 - r5828181;
        double r5828183 = sqrt(r5828182);
        double r5828184 = r5828178 + r5828183;
        double r5828185 = r5828176 * r5828184;
        double r5828186 = cbrt(r5828185);
        double r5828187 = r5828178 - r5828183;
        double r5828188 = r5828176 * r5828187;
        double r5828189 = cbrt(r5828188);
        double r5828190 = r5828186 + r5828189;
        return r5828190;
}

double f(double g, double h, double a) {
        double r5828191 = g;
        double r5828192 = -1.0197648282366805e-191;
        bool r5828193 = r5828191 <= r5828192;
        double r5828194 = 1.0;
        double r5828195 = 2.0;
        double r5828196 = a;
        double r5828197 = r5828195 * r5828196;
        double r5828198 = r5828194 / r5828197;
        double r5828199 = cbrt(r5828198);
        double r5828200 = r5828191 * r5828191;
        double r5828201 = h;
        double r5828202 = r5828201 * r5828201;
        double r5828203 = r5828200 - r5828202;
        double r5828204 = sqrt(r5828203);
        double r5828205 = -r5828191;
        double r5828206 = r5828204 + r5828205;
        double r5828207 = cbrt(r5828206);
        double r5828208 = r5828199 * r5828207;
        double r5828209 = r5828205 - r5828204;
        double r5828210 = r5828198 * r5828209;
        double r5828211 = cbrt(r5828210);
        double r5828212 = r5828208 + r5828211;
        double r5828213 = r5828205 - r5828191;
        double r5828214 = r5828213 * r5828194;
        double r5828215 = cbrt(r5828214);
        double r5828216 = cbrt(r5828197);
        double r5828217 = r5828215 / r5828216;
        double r5828218 = r5828206 * r5828198;
        double r5828219 = cbrt(r5828218);
        double r5828220 = r5828217 + r5828219;
        double r5828221 = r5828193 ? r5828212 : r5828220;
        return r5828221;
}

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.0197648282366805e-191

    1. Initial program 35.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 cbrt-prod31.5

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

    if -1.0197648282366805e-191 < g

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

      \[\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-div33.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. Taylor expanded around inf 32.8

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

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