Average Error: 36.1 → 31.3
Time: 8.3s
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)}\]
\[\begin{array}{l} \mathbf{if}\;g \le 3.2243130481662061 \cdot 10^{-161}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + -1 \cdot g} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(h, h, 0\right)}{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\ \end{array}\]
\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)}
\begin{array}{l}
\mathbf{if}\;g \le 3.2243130481662061 \cdot 10^{-161}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + -1 \cdot g} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\

\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(h, h, 0\right)}{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\

\end{array}
double f(double g, double h, double a) {
        double r174035 = 1.0;
        double r174036 = 2.0;
        double r174037 = a;
        double r174038 = r174036 * r174037;
        double r174039 = r174035 / r174038;
        double r174040 = g;
        double r174041 = -r174040;
        double r174042 = r174040 * r174040;
        double r174043 = h;
        double r174044 = r174043 * r174043;
        double r174045 = r174042 - r174044;
        double r174046 = sqrt(r174045);
        double r174047 = r174041 + r174046;
        double r174048 = r174039 * r174047;
        double r174049 = cbrt(r174048);
        double r174050 = r174041 - r174046;
        double r174051 = r174039 * r174050;
        double r174052 = cbrt(r174051);
        double r174053 = r174049 + r174052;
        return r174053;
}

double f(double g, double h, double a) {
        double r174054 = g;
        double r174055 = 3.224313048166206e-161;
        bool r174056 = r174054 <= r174055;
        double r174057 = 1.0;
        double r174058 = 2.0;
        double r174059 = a;
        double r174060 = r174058 * r174059;
        double r174061 = r174057 / r174060;
        double r174062 = cbrt(r174061);
        double r174063 = -r174054;
        double r174064 = -1.0;
        double r174065 = r174064 * r174054;
        double r174066 = r174063 + r174065;
        double r174067 = cbrt(r174066);
        double r174068 = r174062 * r174067;
        double r174069 = r174054 * r174054;
        double r174070 = h;
        double r174071 = r174070 * r174070;
        double r174072 = r174069 - r174071;
        double r174073 = sqrt(r174072);
        double r174074 = r174063 - r174073;
        double r174075 = r174061 * r174074;
        double r174076 = cbrt(r174075);
        double r174077 = r174068 + r174076;
        double r174078 = 0.0;
        double r174079 = fma(r174070, r174070, r174078);
        double r174080 = r174079 / r174074;
        double r174081 = cbrt(r174080);
        double r174082 = r174062 * r174081;
        double r174083 = cbrt(r174074);
        double r174084 = r174062 * r174083;
        double r174085 = r174082 + r174084;
        double r174086 = r174056 ? r174077 : r174085;
        return r174086;
}

Error

Bits error versus g

Bits error versus h

Bits error versus a

Derivation

  1. Split input into 2 regimes
  2. if g < 3.224313048166206e-161

    1. Initial program 36.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 cbrt-prod33.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. Taylor expanded around -inf 31.8

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

    if 3.224313048166206e-161 < g

    1. Initial program 35.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 cbrt-prod35.1

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

      \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \color{blue}{\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}\]
    6. Using strategy rm
    7. Applied flip-+31.4

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

      \[\leadsto \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\frac{\color{blue}{\mathsf{fma}\left(h, h, 0\right)}}{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;g \le 3.2243130481662061 \cdot 10^{-161}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + -1 \cdot g} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(h, h, 0\right)}{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020020 +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))))))))