Average Error: 36.0 → 32.3
Time: 13.5s
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 r137913 = 1.0;
        double r137914 = 2.0;
        double r137915 = a;
        double r137916 = r137914 * r137915;
        double r137917 = r137913 / r137916;
        double r137918 = g;
        double r137919 = -r137918;
        double r137920 = r137918 * r137918;
        double r137921 = h;
        double r137922 = r137921 * r137921;
        double r137923 = r137920 - r137922;
        double r137924 = sqrt(r137923);
        double r137925 = r137919 + r137924;
        double r137926 = r137917 * r137925;
        double r137927 = cbrt(r137926);
        double r137928 = r137919 - r137924;
        double r137929 = r137917 * r137928;
        double r137930 = cbrt(r137929);
        double r137931 = r137927 + r137930;
        return r137931;
}

double f(double g, double h, double a) {
        double r137932 = 1.0;
        double r137933 = 2.0;
        double r137934 = a;
        double r137935 = r137933 * r137934;
        double r137936 = r137932 / r137935;
        double r137937 = cbrt(r137936);
        double r137938 = g;
        double r137939 = -r137938;
        double r137940 = r137938 * r137938;
        double r137941 = h;
        double r137942 = r137941 * r137941;
        double r137943 = r137940 - r137942;
        double r137944 = sqrt(r137943);
        double r137945 = r137939 + r137944;
        double r137946 = cbrt(r137945);
        double r137947 = r137937 * r137946;
        double r137948 = r137939 - r137944;
        double r137949 = r137932 * r137948;
        double r137950 = cbrt(r137949);
        double r137951 = cbrt(r137935);
        double r137952 = r137950 / r137951;
        double r137953 = r137947 + r137952;
        return r137953;
}

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

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

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

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

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

    \[\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 2019308 
(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))))))))