Average Error: 36.0 → 32.3
Time: 8.1s
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 r253834 = 1.0;
        double r253835 = 2.0;
        double r253836 = a;
        double r253837 = r253835 * r253836;
        double r253838 = r253834 / r253837;
        double r253839 = g;
        double r253840 = -r253839;
        double r253841 = r253839 * r253839;
        double r253842 = h;
        double r253843 = r253842 * r253842;
        double r253844 = r253841 - r253843;
        double r253845 = sqrt(r253844);
        double r253846 = r253840 + r253845;
        double r253847 = r253838 * r253846;
        double r253848 = cbrt(r253847);
        double r253849 = r253840 - r253845;
        double r253850 = r253838 * r253849;
        double r253851 = cbrt(r253850);
        double r253852 = r253848 + r253851;
        return r253852;
}

double f(double g, double h, double a) {
        double r253853 = 1.0;
        double r253854 = 2.0;
        double r253855 = a;
        double r253856 = r253854 * r253855;
        double r253857 = r253853 / r253856;
        double r253858 = cbrt(r253857);
        double r253859 = g;
        double r253860 = -r253859;
        double r253861 = r253859 * r253859;
        double r253862 = h;
        double r253863 = r253862 * r253862;
        double r253864 = r253861 - r253863;
        double r253865 = sqrt(r253864);
        double r253866 = r253860 + r253865;
        double r253867 = cbrt(r253866);
        double r253868 = r253858 * r253867;
        double r253869 = r253860 - r253865;
        double r253870 = r253853 * r253869;
        double r253871 = cbrt(r253870);
        double r253872 = cbrt(r253856);
        double r253873 = r253871 / r253872;
        double r253874 = r253868 + r253873;
        return r253874;
}

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

    \[\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)}\]
  4. Using strategy rm
  5. Applied associate-*l/34.0

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

    \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \color{blue}{\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 2020024 
(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))))))))