Average Error: 36.2 → 32.1
Time: 8.2s
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)}\]
\[\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \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)} + \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) + \sqrt{g \cdot g - h \cdot h}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}
double f(double g, double h, double a) {
        double r158248 = 1.0;
        double r158249 = 2.0;
        double r158250 = a;
        double r158251 = r158249 * r158250;
        double r158252 = r158248 / r158251;
        double r158253 = g;
        double r158254 = -r158253;
        double r158255 = r158253 * r158253;
        double r158256 = h;
        double r158257 = r158256 * r158256;
        double r158258 = r158255 - r158257;
        double r158259 = sqrt(r158258);
        double r158260 = r158254 + r158259;
        double r158261 = r158252 * r158260;
        double r158262 = cbrt(r158261);
        double r158263 = r158254 - r158259;
        double r158264 = r158252 * r158263;
        double r158265 = cbrt(r158264);
        double r158266 = r158262 + r158265;
        return r158266;
}

double f(double g, double h, double a) {
        double r158267 = 1.0;
        double r158268 = 2.0;
        double r158269 = a;
        double r158270 = r158268 * r158269;
        double r158271 = r158267 / r158270;
        double r158272 = cbrt(r158271);
        double r158273 = g;
        double r158274 = -r158273;
        double r158275 = r158273 * r158273;
        double r158276 = h;
        double r158277 = r158276 * r158276;
        double r158278 = r158275 - r158277;
        double r158279 = sqrt(r158278);
        double r158280 = r158274 + r158279;
        double r158281 = cbrt(r158280);
        double r158282 = r158272 * r158281;
        double r158283 = r158274 - r158279;
        double r158284 = r158267 * r158283;
        double r158285 = cbrt(r158284);
        double r158286 = cbrt(r158270);
        double r158287 = r158285 / r158286;
        double r158288 = r158282 + r158287;
        return r158288;
}

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. Initial program 36.2

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

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

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

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

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

Reproduce

herbie shell --seed 2020021 
(FPCore (g h a)
  :name "2-ancestry mixing, positive discriminant"
  :precision binary64
  (+ (cbrt (* (/ 1 (* 2 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1 (* 2 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))