Average Error: 35.7 → 31.8
Time: 8.9s
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 r154458 = 1.0;
        double r154459 = 2.0;
        double r154460 = a;
        double r154461 = r154459 * r154460;
        double r154462 = r154458 / r154461;
        double r154463 = g;
        double r154464 = -r154463;
        double r154465 = r154463 * r154463;
        double r154466 = h;
        double r154467 = r154466 * r154466;
        double r154468 = r154465 - r154467;
        double r154469 = sqrt(r154468);
        double r154470 = r154464 + r154469;
        double r154471 = r154462 * r154470;
        double r154472 = cbrt(r154471);
        double r154473 = r154464 - r154469;
        double r154474 = r154462 * r154473;
        double r154475 = cbrt(r154474);
        double r154476 = r154472 + r154475;
        return r154476;
}

double f(double g, double h, double a) {
        double r154477 = 1.0;
        double r154478 = 2.0;
        double r154479 = a;
        double r154480 = r154478 * r154479;
        double r154481 = r154477 / r154480;
        double r154482 = cbrt(r154481);
        double r154483 = g;
        double r154484 = -r154483;
        double r154485 = r154483 * r154483;
        double r154486 = h;
        double r154487 = r154486 * r154486;
        double r154488 = r154485 - r154487;
        double r154489 = sqrt(r154488);
        double r154490 = r154484 + r154489;
        double r154491 = cbrt(r154490);
        double r154492 = r154482 * r154491;
        double r154493 = r154484 - r154489;
        double r154494 = r154477 * r154493;
        double r154495 = cbrt(r154494);
        double r154496 = cbrt(r154480);
        double r154497 = r154495 / r154496;
        double r154498 = r154492 + r154497;
        return r154498;
}

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 35.7

    \[\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/35.7

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

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

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

    \[\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 2020003 +o rules:numerics
(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))))))))