Average Error: 52.4 → 51.1
Time: 34.6s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le 818.4412850836019:\\ \;\;\;\;\frac{\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*} \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* - \left(b \cdot b\right) \cdot b}{\left(\left(b \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} + b \cdot b\right) + \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) \cdot \left(3 \cdot a\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}\right) \cdot \left(\sqrt[3]{\frac{\frac{-3}{2} \cdot c}{b}} \cdot \sqrt[3]{\frac{1}{3}}\right)\\ \end{array}\]
double f(double a, double b, double c, double __attribute__((unused)) d) {
        double r16268917 = b;
        double r16268918 = -r16268917;
        double r16268919 = r16268917 * r16268917;
        double r16268920 = 3.0;
        double r16268921 = a;
        double r16268922 = r16268920 * r16268921;
        double r16268923 = c;
        double r16268924 = r16268922 * r16268923;
        double r16268925 = r16268919 - r16268924;
        double r16268926 = sqrt(r16268925);
        double r16268927 = r16268918 + r16268926;
        double r16268928 = r16268927 / r16268922;
        return r16268928;
}

double f(double a, double b, double c, double __attribute__((unused)) d) {
        double r16268929 = b;
        double r16268930 = 818.4412850836019;
        bool r16268931 = r16268929 <= r16268930;
        double r16268932 = a;
        double r16268933 = -3.0;
        double r16268934 = c;
        double r16268935 = r16268933 * r16268934;
        double r16268936 = r16268932 * r16268935;
        double r16268937 = fma(r16268929, r16268929, r16268936);
        double r16268938 = sqrt(r16268937);
        double r16268939 = r16268938 * r16268937;
        double r16268940 = r16268929 * r16268929;
        double r16268941 = r16268940 * r16268929;
        double r16268942 = r16268939 - r16268941;
        double r16268943 = r16268932 * r16268934;
        double r16268944 = fma(r16268933, r16268943, r16268940);
        double r16268945 = sqrt(r16268944);
        double r16268946 = r16268929 * r16268945;
        double r16268947 = r16268946 + r16268940;
        double r16268948 = r16268945 * r16268945;
        double r16268949 = r16268947 + r16268948;
        double r16268950 = 3.0;
        double r16268951 = r16268950 * r16268932;
        double r16268952 = r16268949 * r16268951;
        double r16268953 = r16268942 / r16268952;
        double r16268954 = sqrt(r16268945);
        double r16268955 = -r16268929;
        double r16268956 = fma(r16268954, r16268954, r16268955);
        double r16268957 = r16268956 / r16268951;
        double r16268958 = cbrt(r16268957);
        double r16268959 = r16268958 * r16268958;
        double r16268960 = -1.5;
        double r16268961 = r16268960 * r16268934;
        double r16268962 = r16268961 / r16268929;
        double r16268963 = cbrt(r16268962);
        double r16268964 = 0.3333333333333333;
        double r16268965 = cbrt(r16268964);
        double r16268966 = r16268963 * r16268965;
        double r16268967 = r16268959 * r16268966;
        double r16268968 = r16268931 ? r16268953 : r16268967;
        return r16268968;
}

\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le 818.4412850836019:\\
\;\;\;\;\frac{\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*} \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* - \left(b \cdot b\right) \cdot b}{\left(\left(b \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} + b \cdot b\right) + \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) \cdot \left(3 \cdot a\right)}\\

\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}\right) \cdot \left(\sqrt[3]{\frac{\frac{-3}{2} \cdot c}{b}} \cdot \sqrt[3]{\frac{1}{3}}\right)\\

\end{array}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Derivation

  1. Split input into 2 regimes
  2. if b < 818.4412850836019

    1. Initial program 40.2

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Simplified40.2

      \[\leadsto \color{blue}{\frac{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied flip3--40.2

      \[\leadsto \frac{\color{blue}{\frac{{\left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}\right)}^{3} - {b}^{3}}{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)}}}{3 \cdot a}\]
    5. Applied associate-/l/40.2

      \[\leadsto \color{blue}{\frac{{\left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}\right)}^{3} - {b}^{3}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}}\]
    6. Simplified39.7

      \[\leadsto \frac{\color{blue}{\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*} \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* - b \cdot \left(b \cdot b\right)}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}\]

    if 818.4412850836019 < b

    1. Initial program 55.8

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Simplified55.8

      \[\leadsto \color{blue}{\frac{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt55.4

      \[\leadsto \frac{\color{blue}{\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}} - b}{3 \cdot a}\]
    5. Applied fma-neg54.8

      \[\leadsto \frac{\color{blue}{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}}{3 \cdot a}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt54.8

      \[\leadsto \color{blue}{\left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}\right) \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}}\]
    8. Taylor expanded around 0 63.6

      \[\leadsto \left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}\right) \cdot \color{blue}{\left(\sqrt[3]{\frac{1}{3}} \cdot e^{\frac{1}{3} \cdot \left(\left(\log c + \log \frac{-3}{2}\right) - \log b\right)}\right)}\]
    9. Simplified54.2

      \[\leadsto \left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}\right) \cdot \color{blue}{\left(\sqrt[3]{\frac{\frac{-3}{2} \cdot c}{b}} \cdot \sqrt[3]{\frac{1}{3}}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification51.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 818.4412850836019:\\ \;\;\;\;\frac{\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*} \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* - \left(b \cdot b\right) \cdot b}{\left(\left(b \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} + b \cdot b\right) + \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) \cdot \left(3 \cdot a\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{3 \cdot a}}\right) \cdot \left(\sqrt[3]{\frac{\frac{-3}{2} \cdot c}{b}} \cdot \sqrt[3]{\frac{1}{3}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019101 +o rules:numerics
(FPCore (a b c d)
  :name "Cubic critical, wide range"
  :pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))