Average Error: 33.1 → 10.5
Time: 19.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 -1.2620519469386174 \cdot 10^{+154}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b}, \frac{-2}{3} \cdot \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 3.7535994007355634 \cdot 10^{-122}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}{3} - \frac{b}{3}}{a}\\ \mathbf{elif}\;b \le 4.020455841328689 \cdot 10^{-79}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \mathbf{elif}\;b \le 3.5051690294214705 \cdot 10^{-69}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3}}, b \cdot \frac{-1}{3}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \end{array}\]
\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 -1.2620519469386174 \cdot 10^{+154}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b}, \frac{-2}{3} \cdot \frac{b}{a}\right)\\

\mathbf{elif}\;b \le 3.7535994007355634 \cdot 10^{-122}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}{3} - \frac{b}{3}}{a}\\

\mathbf{elif}\;b \le 4.020455841328689 \cdot 10^{-79}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\

\mathbf{elif}\;b \le 3.5051690294214705 \cdot 10^{-69}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3}}, b \cdot \frac{-1}{3}\right)}{a}\\

\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\

\end{array}
double f(double a, double b, double c) {
        double r3560941 = b;
        double r3560942 = -r3560941;
        double r3560943 = r3560941 * r3560941;
        double r3560944 = 3.0;
        double r3560945 = a;
        double r3560946 = r3560944 * r3560945;
        double r3560947 = c;
        double r3560948 = r3560946 * r3560947;
        double r3560949 = r3560943 - r3560948;
        double r3560950 = sqrt(r3560949);
        double r3560951 = r3560942 + r3560950;
        double r3560952 = r3560951 / r3560946;
        return r3560952;
}

double f(double a, double b, double c) {
        double r3560953 = b;
        double r3560954 = -1.2620519469386174e+154;
        bool r3560955 = r3560953 <= r3560954;
        double r3560956 = 0.5;
        double r3560957 = c;
        double r3560958 = r3560957 / r3560953;
        double r3560959 = -0.6666666666666666;
        double r3560960 = a;
        double r3560961 = r3560953 / r3560960;
        double r3560962 = r3560959 * r3560961;
        double r3560963 = fma(r3560956, r3560958, r3560962);
        double r3560964 = 3.7535994007355634e-122;
        bool r3560965 = r3560953 <= r3560964;
        double r3560966 = -3.0;
        double r3560967 = r3560960 * r3560966;
        double r3560968 = r3560967 * r3560957;
        double r3560969 = fma(r3560953, r3560953, r3560968);
        double r3560970 = sqrt(r3560969);
        double r3560971 = 3.0;
        double r3560972 = r3560970 / r3560971;
        double r3560973 = r3560953 / r3560971;
        double r3560974 = r3560972 - r3560973;
        double r3560975 = r3560974 / r3560960;
        double r3560976 = 4.020455841328689e-79;
        bool r3560977 = r3560953 <= r3560976;
        double r3560978 = -0.5;
        double r3560979 = r3560958 * r3560978;
        double r3560980 = 3.5051690294214705e-69;
        bool r3560981 = r3560953 <= r3560980;
        double r3560982 = sqrt(r3560970);
        double r3560983 = cbrt(r3560971);
        double r3560984 = r3560983 * r3560983;
        double r3560985 = r3560982 / r3560984;
        double r3560986 = r3560982 / r3560983;
        double r3560987 = -0.3333333333333333;
        double r3560988 = r3560953 * r3560987;
        double r3560989 = fma(r3560985, r3560986, r3560988);
        double r3560990 = r3560989 / r3560960;
        double r3560991 = r3560981 ? r3560990 : r3560979;
        double r3560992 = r3560977 ? r3560979 : r3560991;
        double r3560993 = r3560965 ? r3560975 : r3560992;
        double r3560994 = r3560955 ? r3560963 : r3560993;
        return r3560994;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 4 regimes
  2. if b < -1.2620519469386174e+154

    1. Initial program 61.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Taylor expanded around -inf 2.9

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b} - \frac{2}{3} \cdot \frac{b}{a}}\]
    3. Simplified2.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b}, \frac{-2}{3} \cdot \frac{b}{a}\right)}\]

    if -1.2620519469386174e+154 < b < 3.7535994007355634e-122

    1. Initial program 10.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied associate-/r*10.9

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3}}{a}}\]
    4. Simplified10.9

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)} - b}{3}}}{a}\]
    5. Using strategy rm
    6. Applied div-sub10.9

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}{3} - \frac{b}{3}}}{a}\]

    if 3.7535994007355634e-122 < b < 4.020455841328689e-79 or 3.5051690294214705e-69 < b

    1. Initial program 50.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Taylor expanded around inf 11.3

      \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{c}{b}}\]

    if 4.020455841328689e-79 < b < 3.5051690294214705e-69

    1. Initial program 37.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied associate-/r*37.6

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3}}{a}}\]
    4. Simplified37.6

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)} - b}{3}}}{a}\]
    5. Using strategy rm
    6. Applied div-sub37.6

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}{3} - \frac{b}{3}}}{a}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt37.6

      \[\leadsto \frac{\frac{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}{\color{blue}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}}} - \frac{b}{3}}{a}\]
    9. Applied add-sqr-sqrt37.6

      \[\leadsto \frac{\frac{\sqrt{\color{blue}{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)} \cdot \sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}} - \frac{b}{3}}{a}\]
    10. Applied sqrt-prod38.0

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}} - \frac{b}{3}}{a}\]
    11. Applied times-frac37.8

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}{\sqrt[3]{3}}} - \frac{b}{3}}{a}\]
    12. Applied fma-neg37.8

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}{\sqrt[3]{3}}, -\frac{b}{3}\right)}}{a}\]
    13. Simplified37.8

      \[\leadsto \frac{\mathsf{fma}\left(\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-3 \cdot a\right)\right)}}}{\sqrt[3]{3}}, \color{blue}{b \cdot \frac{-1}{3}}\right)}{a}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.2620519469386174 \cdot 10^{+154}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b}, \frac{-2}{3} \cdot \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 3.7535994007355634 \cdot 10^{-122}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}{3} - \frac{b}{3}}{a}\\ \mathbf{elif}\;b \le 4.020455841328689 \cdot 10^{-79}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \mathbf{elif}\;b \le 3.5051690294214705 \cdot 10^{-69}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3}}, b \cdot \frac{-1}{3}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019158 +o rules:numerics
(FPCore (a b c)
  :name "Cubic critical"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))