Average Error: 35.8 → 32.0
Time: 7.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)}\]
\[\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 \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)} + \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) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}
double f(double g, double h, double a) {
        double r161998 = 1.0;
        double r161999 = 2.0;
        double r162000 = a;
        double r162001 = r161999 * r162000;
        double r162002 = r161998 / r162001;
        double r162003 = g;
        double r162004 = -r162003;
        double r162005 = r162003 * r162003;
        double r162006 = h;
        double r162007 = r162006 * r162006;
        double r162008 = r162005 - r162007;
        double r162009 = sqrt(r162008);
        double r162010 = r162004 + r162009;
        double r162011 = r162002 * r162010;
        double r162012 = cbrt(r162011);
        double r162013 = r162004 - r162009;
        double r162014 = r162002 * r162013;
        double r162015 = cbrt(r162014);
        double r162016 = r162012 + r162015;
        return r162016;
}

double f(double g, double h, double a) {
        double r162017 = 1.0;
        double r162018 = g;
        double r162019 = -r162018;
        double r162020 = r162018 * r162018;
        double r162021 = h;
        double r162022 = r162021 * r162021;
        double r162023 = r162020 - r162022;
        double r162024 = sqrt(r162023);
        double r162025 = r162019 + r162024;
        double r162026 = r162017 * r162025;
        double r162027 = cbrt(r162026);
        double r162028 = 2.0;
        double r162029 = a;
        double r162030 = r162028 * r162029;
        double r162031 = cbrt(r162030);
        double r162032 = r162027 / r162031;
        double r162033 = r162017 / r162030;
        double r162034 = cbrt(r162033);
        double r162035 = r162019 - r162024;
        double r162036 = cbrt(r162035);
        double r162037 = r162034 * r162036;
        double r162038 = r162032 + r162037;
        return r162038;
}

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.8

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

    \[\leadsto \sqrt[3]{\color{blue}{\frac{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}{2 \cdot a}}} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\]
  4. Applied cbrt-div34.0

    \[\leadsto \color{blue}{\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)}\]
  5. Using strategy rm
  6. Applied cbrt-prod32.0

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

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

Reproduce

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